2016-04-22 3 views
0

クラス内にその作成関数がBaseAdapterを拡張する理由がわかりません。なぜクラス内にcreate関数が存在しないのか分かりません。BaseAdapterを拡張します。

カスタムlistViewでギャラリーから画像ビューを選択します。

関数 "getView"が機能しなくなった後に、関数 "onActivityResult"を追加しようとしました。

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(); 
      } 
     } 
    } 
} 

しかし、私は機能を追加しようと、 "onActivityResult" クラス "MainActivity" にそれが動作します。

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(); 
      } 
     } 
    } 

"CustomList"クラスで "onActivityResult"を機能させたいのですが。実行する方法?

+0

'onActivityResult'メソッドは 'Activity'からのものなので、' Activity'や 'FragmentActivity'を拡張していない他のクラスの中ではオーバーライドできません。 [インターフェイスを使用してカスタムリスナーを作成する](https://guides.codepath.com/android/Creating-Custom-Listeners)または[LocalBroadcastManager](http://developer.android.com/)のいずれかを使用して、必須タスクをアーカイブすることができます。 intl/es/reference/android/support/v4/content/LocalBroadcastManager.html) –

答えて

0

You can notonActivityResultは、Activityに拡張されたクラスで動作するように設計されています。そのため、MainActivityクラスで動作します。

+0

良い回答ありがとうございます。 – babyPG

関連する問題