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