首页 > 解决方案 > 如何在更改其(行项目的)选择器(选定项目的背景等)后恢复列表视图行项目的默认效果?

问题描述

我正在使用自定义ActionMode(不是AbsListView.MultiChoiceModeListener()附带的listview的默认ActionMode)在列表视图上实现多项选择。它只是更改每个行项的背景颜色,并且在 Adapter 类中有一个 SparseBooleanArray 来跟踪突出显示的行项(请注意,我没有调用 setselected() 或任何方法,我只是突出显示选定的节点并保持SparseBooleanArray 中突出显示的行的位置)。现在,我想要在取消选择行项目后更改回默认模式(波纹或以前的 Android 版本中的任何内容)。

另一件事,我没有在多选之前为列表行设置任何背景颜色,适配器只是将其以默认样式放入 listvew 中。

谢谢...

标签: android

解决方案


您必须调用 notifyDataSetChanged(),但在此之前,您必须在 onBindViewHolder 中进行检查

onBindViewHolder(..params, positions){
if(isPositionSetInYourSparseBooleanArray){
//Your background for set ones
}else{
//Your background for unset ones
}
}

要全部取消设置,请清除稀疏布尔数组,因为它们都不会被设置,所有都将落入 else 并将您的背景应用于未设置的那些。notifyDataSetChanged()取消设置 sparseArray 后不要忘记打电话


推荐阅读