如何使用SelectAll按钮更改recyclerview所有项目的背景?

时间:2019-03-14 19:00:06

标签: android android-recyclerview recycler-adapter

我正在使用recyclerview,我知道如何更改所选项目的颜色...

我正在使用SparseBooleanArray更改多个项目的颜色,但是当用户触摸selectAll按钮时不知道如何更改所有项目的颜色

其余的工作正常,例如将所有项目都放在arraylist中,但不知道如何同时更改背景颜色。...

请任何人都可以建议我...并为代码添加注释,如果您想在无法注释的情况下将其回答您需要给我建议的哪个班级

2 个答案:

答案 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);

希望能帮助您理解。