2013-03-02 44 views
2

誰能告訴我,爲什麼當我將此屬性設置爲我的ListView:的ListView選擇模式

mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

的項目名單上,似乎隨時重裝我點擊其中的一個?如果我刪除那個行爲不會顯示的屬性。

我在我的活動OnCreateView方法設置此,我也可以在我的XML得到相同的結果此設置:

<ListView 
     android:id="@+id/lista" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="@string/per_lista" 
     android:fadingEdge="none" 
     android:divider="#e2e2e2" 
     android:dividerHeight="1dp" 
     android:choiceMode="singleChoice"> 
+0

你什麼時候調用這個函數? – abbath 2013-03-02 00:25:06

+0

@abbath請參閱我的編輯 – BigBen3216 2013-03-02 00:29:44

+0

您確定項目正在重新加載?,因爲在listView中視圖重新加載整個時間,但不完全是項目,choiceMode在此行爲中無關緊要。只是我的意見 – vgarzom 2013-03-02 00:41:05

回答

3

每一個項目被選中/取消ListView控件調用requestLayout時間()這會導致其子項被重繪。不過,這並不意味着這些項目正在重新加載。如果您的物品正在重新加載,那麼我們需要更多信息。以防萬一你想看看,ListView源可以找到here

不幸的是,我不知道,我甚至不確定你可以避免重畫列表項。這是預期的行爲,因爲正在重繪項目,因此可以根據選擇設置或重置其選定狀態。您始終可以使用源代碼作爲自定義ListView的基礎,該選擇狀態在更改後不會請求佈局傳遞/重繪。