recycleview点击item改变item的背景色
时间: 2023-05-12 09:05:38 浏览: 84
您可以通过在RecyclerView的Adapter中实现一个点击事件监听器来实现这个功能。在监听器中,您可以使用View.setBackgroundColor()方法来改变被点击的item的背景色。以下是一个示例代码:
```
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> mData;
private int mSelectedPosition = -1;
public MyAdapter(List<String> data) {
mData = data;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.textView.setText(mData.get(position));
if (position == mSelectedPosition) {
holder.itemView.setBackgroundColor(Color.BLUE);
} else {
holder.itemView.setBackgroundColor(Color.WHITE);
}
}
@Override
public int getItemCount() {
return mData.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
mSelectedPosition = position;
notifyDataSetChanged();
}
}
}
}
```
在这个示例代码中,我们使用了一个mSelectedPosition变量来记录当前被选中的item的位置。在onBindViewHolder()方法中,我们根据mSelectedPosition的值来设置item的背景色。在ViewHolder中,我们设置了一个点击事件监听器,当item被点击时,我们更新mSelectedPosition的值并调用notifyDataSetChanged()方法来刷新RecyclerView的显示。