recyclerview item 点击时选中
时间: 2023-05-11 17:03:01 浏览: 161
非常感谢您的提问。当 RecyclerView 的 item 被点击时,可以通过设置 item 的选中状态来实现选中效果。您可以在 RecyclerView.Adapter 的 onBindViewHolder 方法中设置 item 的点击事件,然后在点击事件中设置 item 的选中状态。具体实现可以参考以下代码:
```
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
private List<String> mDataList;
private int mSelectedPosition = -1;
public MyAdapter(List<String> dataList) {
mDataList = dataList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.itemView.setSelected(position == mSelectedPosition);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int previousSelectedPosition = mSelectedPosition;
mSelectedPosition = holder.getAdapterPosition();
notifyItemChanged(previousSelectedPosition);
notifyItemChanged(mSelectedPosition);
}
});
holder.bindData(mDataList.get(position));
}
@Override
public int getItemCount() {
return mDataList.size();
}
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private TextView mTextView;
public MyViewHolder(View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.text_view);
}
public void bindData(String data) {
mTextView.setText(data);
}
}
```
在上述代码中,我们通过设置 item 的 selected 状态来实现选中效果。在 onBindViewHolder 方法中,我们设置了 item 的点击事件,并在点击事件中更新了选中的 item 的位置,并通过 notifyItemChanged 方法通知 RecyclerView 更新选中状态。
阅读全文