我正在使用自定义的SimpleOnGestureListener来检测长按和单击,并在我的ListView上实现了它,它有一个选择器。使用ChoiceMode设置选择器列表视图multipleChoice
现在,我开始一个上下文动作模式,当列表中的一个项目被长时间按下,然后每次调用singleTapUp时,我会将项目索引添加到一组选定的项目中。我也使用了非常基本的集合来实现切换逻辑。
虽然切换,我也检查,如果该索引是从ListView控件调用
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>
仍然不会更改行为,第一个启动操作模式的项目不保留激活的背景,但后续项目在单击后会保留它。即使我长时间按下每个项目,激活的背景也不会被任何一个人保留。 – trpride 2015-03-31 13:22:02