更改 recyclerView 项目背景 onClick?

Igo*_*yuk 2 android android-recyclerview

当我按下我的按钮时,我会这样做recyclerView,这会改变它的背景颜色,这样按下的按钮就会可见,但我不太喜欢android,所以我不知道如何做到这一点。

我尝试过在网上找到的一些指南,但其中大多数对我不起作用,就像在本指南中按钮没有颜色而只是白色。我会做一些类似 我的活动屏幕的事情

这是我的recyclerView适配器代码:

public class RecyclerViewMenu extends RecyclerView.Adapter<RecyclerViewMenu.MenuViewHolder> {

private ArrayList<MenuConstructor> menuConstructors;
private OnItemClickListener onItemClickListener;

public interface  OnItemClickListener {
    void onItemClick(int position);
}

public void setOnItemClickListener(OnItemClickListener listener){
    onItemClickListener = listener;
}

@NonNull
@Override
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.menucard,parent,false);
    return new MenuViewHolder(v, onItemClickListener);

}


RecyclerViewMenu(ArrayList<MenuConstructor> menuList){
    menuConstructors = menuList;
}

@Override
public void onBindViewHolder(@NonNull final MenuViewHolder holder, final int position) {


    MenuConstructor currentItem = menuConstructors.get(position);

    holder.textView.setText(currentItem.getDesk());
    holder.itemView.setBackgroundColor(Color.parseColor(currentItem.getSfondoColor()));
    holder.textView.setTextColor(Color.parseColor(currentItem.getFontColor()));



}

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

public static class MenuViewHolder extends RecyclerView.ViewHolder {

    public TextView textView;

    MenuViewHolder(View itemView, final OnItemClickListener listener) {
        super(itemView);

        textView = itemView.findViewById(R.id.ButtonName);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    if(listener != null){
                        int position = getAdapterPosition();
                        if (position != RecyclerView.NO_POSITION){
                            listener.onItemClick(position);
                        }
                    }


            }
        });



    }
}
Run Code Online (Sandbox Code Playgroud)

}

实际上,如果我按下按钮,它会加载到向上的RecyclerView不同项目上,例如如果按下“CICCIO”,它将加载一些内容,如果按下另一个按钮,它将加载其他项目,如果我使用快速学习者答案,就会发生这种情况

通过按下按钮更改项目的活动 Gif

使用快速学习解决方案后,它改变了颜色,但不再是项目

Qui*_*ner 7

如果您想更改回收器视图中所选项目的颜色,请尝试此操作

 public class AdapterClass extends RecyclerView.Adapter<AdapterClass.ViewHolder> {
            private int selected_position = -1;

            @Override
            public void onBindViewHolder(PlacesLocationAdapter.ViewHolder holder, final int position) {
                if (selected_position == position) {
                    // do your stuff here like
                    //Change selected item background color 

                } else {
                      // do your stuff here like
                      //Change  unselected item background color 
                }
              // rest of the code here

       }


    }
Run Code Online (Sandbox Code Playgroud)

这个MenuViewHolder类应该是这样的

public static class MenuViewHolder extends RecyclerView.ViewHolder {

    public TextView textView;

    MenuViewHolder(View itemView, final OnItemClickListener listener) {
        super(itemView);

        textView = itemView.findViewById(R.id.ButtonName);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    if(listener != null){
                        int position = getAdapterPosition();
                        if (position != RecyclerView.NO_POSITION){
                            listener.onItemClick(position);
                         selected_position = position;
                         notifyDataSetChanged();
                        }
                    }


            }
        });



    }
Run Code Online (Sandbox Code Playgroud)