当前位置: 首页 > 知识库问答 >
问题:

更改RecyclerView所选项目背景

韦飞尘
2023-03-14

我有一个清单,我在回收商的视图中展示了这一点

一些项目有蓝色背景和其他项目有灰色背景

我想编辑所选项目背景(所选项目表示已单击的项目)

这是我的适配器类

public class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserViewHolder> {
private Context context;
private List<User> users = new ArrayList<>();

public UserAdapter(List<User> users, Context context) {
    this.users = users;
    this.context = context;
}

@NonNull
@Override
public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    return new UserViewHolder(LayoutInflater.from(context).inflate(R.layout.item_user, parent, false));
}

@Override
public void onBindViewHolder(@NonNull UserViewHolder holder, int position) {
    holder.binUser(users.get(position), position);
}

@Override
public int getItemCount() {
    return users.size();
}

public class UserViewHolder extends RecyclerView.ViewHolder {
    private TextView tvName;
    private RelativeLayout rlItemUser;

    public UserViewHolder(@NonNull View itemView) {
        super(itemView);
        tvName = itemView.findViewById(R.id.tv_itemUser_name);
        rlItemUser = itemView.findViewById(R.id.itemUser_rootView);
    }

    public void binUser(User user, int position){
        tvName.setText(user.getName());
        if (user.getMode().equals("passenger")){
            rlItemUser.setBackgroundColor(context.getResources().getColor(R.color.colorGray));
            tvName.setTextColor(context.getResources().getColor(R.color.colorPrimary));
        } else if (user.getMode().equals("driver")){
            rlItemUser.setBackgroundColor(context.getResources().getColor(R.color.colorPrimary));
            tvName.setTextColor(context.getResources().getColor(R.color.colorGray));
        }

        
    }
}

共有1个答案

简烨烁
2023-03-14

在bindUser方法中:

rlItemUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                rtlItemUser.setBackgroundColor(context.getResources().getColor(your color);
                adapter.notifyItemChanged(position);
            }
        });
 类似资料:
  • 在选择我的treeview时遇到问题。其思想是,用户单击该项,然后将数据添加到他们选择的节点下 似乎所选项目是一个文本块,我似乎找不到一种方法将其作为treeview项目来添加节点。 是的,我对这种编程很陌生。 感谢您提供的任何帮助。

  • 我想改变Long Press上Card View的背景,我访问了这么多论坛,但没有人给出正确的答案。 那么,如何改变列表/卡片/回收器视图的背景,就像长按导航视图项目一样??

  • 问题内容: 我正在尝试以可靠,外观独立的方式更改a的颜色。 如果使用Metal L&F,则使用UIManager是一种方法: 注意 :Iyy指出我在上面的属性名称中有一个错字,但是我会留给上面的人输入,但实际的属性名称应该是: 但是,这在我当前的外观(当前为Windows XP)中不起作用。经过进一步分析,看来Windows(仍然是XP)中的系统外观根本没有使用任何基于-的属性,或者至少它本身不提

  • 问题内容: 我有一个框,当单击框并显示所有选项时,我正在尝试更改选项的背景色。 HTML: CSS: 问题答案: 你需要把对标签,而不是标签… 如果要为每个标签设置样式,请使用css 选择器:

  • 我有一个选择框,当选择框被单击并显示所有选项时,我正在尝试更改选项的背景颜色。

  • 我有一个这里提到的类似用例。我想将SWT表格项目选择背景颜色从默认的灰色或蓝色更改为其他颜色。我尝试使用StyledCellLabelProvider#update方法,但没有用。它只是将所有表项的背景色更新为给定的颜色。但我需要它只用于选定的项目。下面是我的标签提供程序更新方法的代码段 提前感谢您的帮助!