我正在使用自定义 SimpleOnGestureListener 来检测长按和单击,我正在我的 ListView 上实现它,它上面有一个选择器。
现在,当长按列表中的项目时,我将启动上下文操作模式,之后每次调用 singleTapUp 我将项目索引添加到一组选定项目。我还使用非常基本的集合实现了切换逻辑。
在切换时,我还检查该索引是否映射到我通过调用获得的稀疏布尔数组中的布尔值
getCheckedItemPositions()
在列表视图上。如果索引不在选定的项目中,我添加它并调用
listView.setItemChecked(index, true)
否则我将其从集合中删除并调用
listView.setItemChecked(index, false)
现在我的问题是当长按时启动动作模式回调的第一个项目不会保持其激活的背景,而我点击的所有后续项目都会这样做。
我还观察到,如果我不打电话
setItemChecked()
明确地然后我必须长按每个项目以保留激活的背景,并且单击项目不会改变背景。
有人可以帮我找出一种干净的方法来做我想要实现的目标吗?任何帮助都感激不尽。
这是我正在使用的选择器--->
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_activated="true"
android:drawable="@drawable/blue_highlight"/>
<item android:state_activated="false"
android:drawable="@drawable/plank_idle"/>
</selector>