话不多说,直接上效果图:
我就直接上关键的代码了,相信聪明的你们一定能举一反三!
1、根据类型变色
在 onBindViewHolder里写上如下代码!
@Override
public void onBindViewHolder(@NonNull final MyAdapter.ViewHolder viewHolder, final int i) {
// 得到我们在 RecyclerView 中 自定义的 ViewHolder 的对象
final ViewHolder recViewHolderLeft = (ViewHolder) viewHolder;
// 根据不同的类型设置它们不同的背景颜色,
if (bean.getImgid().equals("停车费")){
recViewHolderLeft.itemView.setBackgroundColor(Color.YELLOW);
}else if (bean.getImgid().equals("过路费")){
recViewHolderLeft.itemView.setBackgroundColor(Color.GREEN);
}else if (bean.getImgid().equals("油费")){
recViewHolderLeft.itemView.setBackgroundColor(Color.BLUE);
}else if (bean.getImgid().equals("罚款")){
recViewHolderLeft.itemView.setBackgroundColor(Color.RED);
}
}
itemView 表示每一个 item 的view视图,更改的是整个item的背景颜色!
根据点击的item变色
private View.OnClickListener mOnClickListener;
@Override
public void onBindViewHolder(@NonNull Vh vh, int position) {
vh.setData(mList.get(position),position);
}
class Vh extends RecyclerView.ViewHolder {
ImageView mThumb;
TextView mName;
public Vh(View itemView) {
super(itemView);
itemView.setOnClickListener(mOnClickListener);
}
void setData(GameClassifyBean.ClassifyListBean bean,int position) {
bean.itemPosition = position; //因为 setTag 我们传的是bean,所以我这里记一下每个bean的坐标
itemView.setTag(bean);
// 判断当前项是否选中,设置背景色
if (selectedPosition == position) {
itemView.setBackground(ContextCompat.getDrawable(mContext,R.drawable.circle_game_classify_true));
mName.setTextColor(Color.WHITE);
} else {
itemView.setBackground(ContextCompat.getDrawable(mContext,R.drawable.circle_game_classify));
mName.setTextColor(Color.parseColor("#323232"));
}
ImgLoader.display(mContext, bean.thumb, mThumb);
mName.setText(bean.name);
}
}
mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Object tag = v.getTag();
if (tag != null) {
MyBean bean = (MyBean) tag;
// 更新选中的位置
selectedPosition = bean.itemPosition;
// 通知RecyclerView刷新列表
notifyDataSetChanged();
}
}
};