39

& callonActivityResume内にメソッドを持つことは可能ですか?adapterstartActivityForResult

4

4 に答える 4

102

はい。アクティビティのコンテキストをアダプターのコンストラクター (ここでは mContext として格納) でアダプターに渡すだけです。getView では、呼び出すだけです

((Activity) mContext).startActivityForResult(intent,REQUEST_FOR_ACTIVITY_CODE);
于 2012-08-09T12:03:08.443 に答える
9

必ずしもアダプターのコンストラクターでコンテキストを渡す必要はありません。親 ViewGroup からコンテキストを取得できます。RecyclerView アダプターのサンプル:

 Context mContext;
 @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        mContext = parent.getContext();
        ...
    }

ListView BaseAdapter のサンプル

 Context mContext;
 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        mContext = parent.getContext();
        ...
}

そして、好きな場所で使用してください

((Activity) mContext).startActivityForResult(intent, REQUEST_FOR_ACTIVITY_CODE);
于 2015-11-23T04:39:05.277 に答える
2
//First Do
public Activity context;
public int REQUEST_CODE = 111;

public Adapter(Activity context, Data data) {
    this.context = context;
}

///Second Do
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, NextActivity.class);
            context.startActivityForResult(intent, REQUEST_CODE);
        }
    });
}

このコードに従えば、それを書く必要はありません - ((Activity) context) - 毎回、前に - .startActivityForResult(intent, REQUEST_CODE); - Adapter で startActivityForResult を使用する場合。

于 2020-11-11T13:45:45.040 に答える