我正在使用recyclerview,我知道如何更改所选项目的颜色...
我正在使用SparseBooleanArray更改多个项目的颜色,但是当用户触摸selectAll按钮时不知道如何更改所有项目的颜色
其余的工作正常,例如将所有项目都放在arraylist中,但不知道如何同时更改背景颜色。...
请任何人都可以建议我...并为代码添加注释,如果您想在无法注释的情况下将其回答您需要给我建议的哪个班级
答案 0 :(得分:1)
我找到了问题的答案,我认为这是最简单的方法:
创建视图类型的数组列表...
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);
}
}
之后,当您想使用它
for(View v:view){
v.setBackground(context.getResources().
getDrawable(android.R.color.transparent));
}
您也可以按位置使用它。...
View v= view.get(index); //index is the int value for which you want to get the view.
尝试并享受这个简单的代码。...
答案 1 :(得分:0)
您只需跟踪每个项目的颜色在单独的数组中,然后在onBindViewHolder
中填充RecyclerView
中的每个项目,然后从中获取背景颜色的状态数组。
对于我承担的每个项目,您都有一个点击侦听器。当您要更改背景颜色时,只需保留一系列项目并在单击时相应地更新项目的值即可。例如,您可能考虑使用以下数组。
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);
希望能帮助您理解。