我正在使用自定義的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