android的RecyclerView的adapter点击子控件 RecyclerView外部控件textview记录点击了几个adapter的item
时间: 2023-11-16 13:19:20 浏览: 97
可以在 RecyclerView 的 Adapter 中定义一个接口,将子控件的点击事件传递给 Activity 或 Fragment 中的实现该接口的对象,然后在该对象中记录点击了哪些 Adapter 的 Item。具体实现步骤如下:
1. 在 Adapter 中定义一个接口 OnItemClickListener,该接口有一个方法 onItemClick,用于传递点击事件以及点击的位置信息。
```
public interface OnItemClickListener {
void onItemClick(int position);
}
```
2. 在 Adapter 中定义一个成员变量 mListener,用于保存 OnItemClickListener 的实例。
```
private OnItemClickListener mListener;
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
```
3. 在 Adapter 的 ViewHolder 中为子控件设置点击事件,然后调用 OnItemClickListener 的 onItemClick 方法将点击事件传递出去。
```
public class MyViewHolder extends RecyclerView.ViewHolder {
private TextView mTextView;
public MyViewHolder(View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.text_view);
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onItemClick(getAdapterPosition());
}
}
});
}
}
```
4. 在 Activity 或 Fragment 中实现 OnItemClickListener 接口,并在其中记录点击了哪些 Adapter 的 Item。
```
public class MyActivity extends AppCompatActivity implements MyAdapter.OnItemClickListener {
private TextView mTextView;
private Set<Integer> mClickedPositions = new HashSet<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
mTextView = findViewById(R.id.text_view);
MyAdapter adapter = new MyAdapter();
adapter.setOnItemClickListener(this);
recyclerView.setAdapter(adapter);
}
@Override
public void onItemClick(int position) {
if (mClickedPositions.contains(position)) {
mClickedPositions.remove(position);
} else {
mClickedPositions.add(position);
}
mTextView.setText("点击了 " + mClickedPositions.size() + " 个 Item");
}
}
```
这样,当子控件被点击时,就会调用 OnItemClickListener 的 onItemClick 方法,将点击事件传递给 Activity 或 Fragment 中的实现对象,然后在该对象中记录点击了哪些 Adapter 的 Item。最后,在外部的 TextView 中显示点击了几个 Item。
阅读全文
相关推荐















