2016-04-22 12 views
0

Ich weiß nicht, warum diese create-Funktion nicht in der Klasse ist, erweitert BaseAdapter.Ich weiß nicht, warum diese create-Funktion nicht in der Klasse ist, erweitert BaseAdapter

Ich möchte Bild von Galerie zu Bildansicht in benutzerdefinierten ListView auswählen.

Ich versuche, eine Funktion "onActivityResult" hinzuzufügen, nachdem die Funktion "getView" nicht funktioniert.

CustomList.java

public class CustomList extends BaseAdapter { 

    public static final int REQUEST_GALLERY = 1; 

    Context mContext; 
    String[] strText1; 

    TextView Text1; 
    public static ImageView imgView; 

    public CustomList(Context context, String[] strText1) { 
     this.mContext = context; 
     this.strText1 = strText1; 
    } 

    public int getCount() { 
     return strText1.length; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(final int position, View view, ViewGroup parent) { 
     LayoutInflater mInflater = 
       (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (view == null) 
      view = mInflater.inflate(R.layout.custom_listview, parent, false); 

     Text1 = (TextView) view.findViewById(R.id.Text1); 
     Text1.setText(strText1[position]); 

     imgView = (ImageView) view.findViewById(R.id.imgView); 
     imgView.setImageResource(R.drawable.ic_NoPhoto); 

     view.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
       intent.setType("image/*"); 
       ((Activity) mContext).startActivityForResult(Intent.createChooser(intent 
         , "Select Picture"), REQUEST_GALLERY); 
      } 
     }); 

     return view; 
    } 

    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == REQUEST_GALLERY && resultCode == Activity.RESULT_OK) { 
      Uri uri = data.getData(); 
      try { 
       Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
       imgView.setImageBitmap(bitmap); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

Aber ich versuche, eine Funktion "onActivityResult" der Klasse "MainActivity" hinzufügen, um es zu arbeiten.

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CustomList.REQUEST_GALLERY && resultCode == RESULT_OK) { 
      Uri uri = data.getData(); 
      try { 
       Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
       CustomList.imgView.setImageBitmap(bitmap); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

Wenn ich "onActivityResult" in der Klasse "CustomList" funktionieren soll. Wie macht man?

+0

'onActivityResult' -Methode stammt von 'Activity', daher ist es nicht möglich, sie innerhalb einer anderen Klasse zu überschreiben, die' Activity' oder 'FragmentActivity' nicht erweitert. aber Sie können die Anforderung anfordern, indem Sie entweder [benutzerdefinierter Listener über Schnittstelle erstellen] (https://guides.codepath.com/android/Creating-Custom-Listeners) oder [LocalBroadcastManager] (http://developer.android.com/) verwenden. intl/es/referenz/android/support/v4/content/LocalBroadcastManager.html) –

Antwort

0

Sie KANN NICHT. onActivityResult ist entworfen, um mit Klassen zu arbeiten, die Activity erweitert, weshalb es in Ihrer MainActivity Klasse funktionieren würde.

+0

Danke für die guten Antworten. – babyPG