更改recyclerView项目背景onClick? [英] Change recyclerView item background onClick?

查看:73
本文介绍了更改recyclerView项目背景onClick?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我按下 recyclerView 中的按钮时,我会做出改变,使其背景颜色变化,以便可以看到被按下的背景颜色,但是我不太喜欢android,所以我无法怎么做.

I would make that when I press a button in my recyclerView that will change it background color so it will be visible that is pressed but I'm not very into android so I can't get how to do it.

我尝试了一些在网上找到的指南,但是其中大多数指南对我都不起作用,例如在我的活动屏幕

I've tried some guides found online but most of them didn't worked for me, like in this guide the buttons were not getting their color and were just white. I would do somethink like that screen of my activity

这是我的 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);
                        }
                    }


            }
        });



    }
}

}

实际上,如果我按下按钮上的某个按钮,它会加载到已升级的 RecyclerView 不同项目上,例如如果将"CICCIO"按下上方,它将加载一些东西;如果按下另一个按钮,它将加载其他项目,如果我使用快速学习者答案,将会发生这种情况

Actually if I press on of the button's it's load on the upped RecyclerView different items like if "CICCIO" is pressed upper it will load some stuff if another button is pressed it will load other items and if I use quick learner answer that's what happens

通过按按钮更改项目的活动动向

在使用快速学习者解决方案之后,它会更改颜色,但现在不再更改

推荐答案

如果您想在回收站视图中更改所选项目的颜色,请尝试

Try this if you want to change the color of selected item in recycler view

 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

       }


    }

,并且这个 MenuViewHolder 类应该是这样的

and this MenuViewHolder class should be like this

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


            }
        });



    }

这篇关于更改recyclerView项目背景onClick?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆