Android 如何使用SelectAll按钮更改recyclerview所有项目的背景?
我正在与recyclerview合作,我知道如何更改选定项目的颜色 我正在使用SparseBooleanArray更改多个项目的颜色,但不知道当用户触摸selectAll按钮时如何更改所有项目的颜色 剩下的工作正常,比如获取arraylist中的所有项目,但不知道如何同时更改背景颜色Android 如何使用SelectAll按钮更改recyclerview所有项目的背景?,android,android-recyclerview,Android,Android Recyclerview,我正在与recyclerview合作,我知道如何更改选定项目的颜色 我正在使用SparseBooleanArray更改多个项目的颜色,但不知道当用户触摸selectAll按钮时如何更改所有项目的颜色 剩下的工作正常,比如获取arraylist中的所有项目,但不知道如何同时更改背景颜色 请任何人都可以向我提出建议…如果你想对代码进行注释,如果你无法进行注释,请将其放在回答中,你需要哪一类来给我提供建议你只需在一个单独的数组中跟踪每个项目的颜色,然后在你的onBindViewHolder中填充每个项
请任何人都可以向我提出建议…如果你想对代码进行注释,如果你无法进行注释,请将其放在回答中,你需要哪一类来给我提供建议你只需在一个单独的数组中跟踪每个项目的颜色,然后在你的
onBindViewHolder
中填充每个项目,从该数组中获取背景色的状态
我假设每个项目都有一个单击侦听器。当您要更改背景颜色时,只需保留一个项目数组,并在单击时相应地更新项目的值。例如,您可以考虑使用以下数组。
int[] selectedItems = new int[yourArrayList.size()]; // Initially all items are initialized with 0
然后在您的onBindViewHolder
中,您需要在选择项目时分配1
public void onClick(int position) {
// Change the background here
// Keep track of the items selected in the array
if (selectedItems[position] == 0)
selectedItems[position] = 1; // The item is selected
else selectedItems[position] = 0; // The item is unselcted
}
if(selectedItems[position] == 1) itemView.setBackgroundColor(andriod.R.color.gray);
else itemView.setBackgroundColor(andriod.R.color.white);
希望这能帮助你理解 我找到了问题的答案,我认为这是最简单的方法: 创建视图类型的arraylist
Arraylist<View> view=new ArrayList();
class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener {
private ImageView thumbnail_img;private TextView SongName;LinearLayout layout;
private ItemViewHolder(View itemView) {
super(itemView);
itemView.setOnLongClickListener(this);
itemView.setOnClickListener(this);
view.add(itemView);
thumbnail_img=itemView.findViewById(R.id.album_art);
SongName=itemView.findViewById(R.id.song_test);
}
}
你也可以按位置使用它
View v= view.get(index); //index is the int value for which you want to get the view.
试着享受这段简单的代码。…看看这篇SO帖子,不管怎样,我可以不用另一个图书馆来实现它吗没有图书馆:可能重复我知道某个地方一定有一篇好的SO帖子:我没有任何复选框,如果要设置侦听器,请检查更新的答案好吗?我试图解释这个想法感谢您的支持,但您能否查看更新的问题并建议我如何使用上述代码实现功能
View v= view.get(index); //index is the int value for which you want to get the view.