はこのようにアダプタを考える:あなたが見ることができるように、アクティビティ・インスタンスが意図打ち上げのために必要とされるRecyclerView.AdapterでContext/Activityインスタンスをリークしないでください。
public class MyAdapter extends RecyclerView.Adapter {
private final Activity mActivity;
private final List<Item> mItemList;
public MyAdapter(Activity activity, List<Item> itemList) {
this.mActivity = activity;
this.mItemList = itemList;
}
//[...]
public void onBindViewHolder(ViewHolder holder, int position) {
final Item i = mItemList.get(position);
holder.launchButton.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
mActivity.startActivity(i.getIntent());
});
}
}
。もちろん、それを行う他の方法がありますが(たとえばインターフェイスを使用するなど)、問題のポイントはアダプタのmActivityインスタンスへのハードリファレンスを維持することが安全であるかどうかです。
良い説明のための最良の答えとして選んだ – BamsBamx