Android 点击recycleview item设置背景色再点击取消背景色
时间: 2023-08-29 11:12:38 浏览: 104
实现这个功能的思路如下:
1. 在 RecyclerView 的 Adapter 中定义一个变量来记录当前被选中的 item 的位置。
2. 在 onBindViewHolder 方法中,根据当前 item 的位置设置背景色。
3. 在 onBindViewHolder 方法中,判断当前 item 是否是被选中的 item,如果是,则设置背景色,否则取消背景色。
4. 在 RecyclerView 的 OnItemClickListener 中,更新选中的 item 的位置,并调用 notifyDataSetChanged 方法刷新 RecyclerView。
具体实现代码如下:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<String> mData;
private int mSelectedPosition = -1;
public MyAdapter(List<String> data) {
mData = data;
}
@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.textView.setText(mData.get(position));
if (mSelectedPosition == position) {
holder.itemView.setBackgroundColor(Color.BLUE);
} else {
holder.itemView.setBackgroundColor(Color.TRANSPARENT);
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSelectedPosition = holder.getAdapterPosition();
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return mData.size();
}
static class MyViewHolder extends RecyclerView.ViewHolder {
TextView textView;
MyViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
}
}
}
```
在上面的代码中,我们定义了一个 mSelectedPosition 变量来记录当前被选中的 item 的位置。在 onBindViewHolder 方法中,我们根据这个变量来设置和取消背景色。在 ViewHolder 的 itemView 上设置 OnClickListener,当用户点击 item 时,我们更新选中的位置并调用 notifyDataSetChanged 方法刷新 RecyclerView。
阅读全文