简体   繁体   English

更改 RecyclerView 所选项目背景

[英]Change RecyclerView Selected Item background

i have a list and i showed that in recycler view我有一个清单,我在回收站视图中展示了它

some of items have blue background and other items have gray background一些项目有蓝色背景,其他项目有灰色背景

i want to edit selected item background ( The selected item means the item that has been clicked )我想编辑所选项目背景(所选项目表示已单击的项目)

this is my adapter class这是我的适配器 class

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));
        }

        
    }
}

in the bindUser method:在 bindUser 方法中:

rlItemUser.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                rtlItemUser.setBackgroundColor(context.getResources().getColor(your color);
                adapter.notifyItemChanged(position);
            }
        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM