簡體   English   中英

ListView中的復選框具有奇怪的檢查行為

[英]Checkbox in ListView with odd checking behaviour

我是Java和Andriod開發的新手。

我的應用程序中有一個包含ListView的視圖

然后,我有一個自定義適配器,它繼承自ArrayAdapter

在getView方法的視圖中,我返回一行,其中包含一些文本和一個復選框

到目前為止,這一切都很好,我的列表已填充,我可以檢查我的項目,所有事件似乎都按預期觸發。

我遇到的問題是我檢查了前3個項目,然后注意到檢查了第11、12和13個項目,並且在我滾動時,我看到以固定的間隔似乎也以相同的方式檢查了其他復選框。

如果我選中約10個復選框,則最終將檢查約80個列表中的所有項目。

誰能解釋我做錯了什么?

我不認為任何代碼都可以幫助解釋這一點,因為我沒有在任何地方設置復選框的checkstate,這些都可以自行處理,因此正在檢查的事實使我感到困惑。

提前致謝

發生這種情況是因為Android出於性能目的回收列表項,在這里您可以解決此問題: ListView在...時重用視圖...我不希望這樣做

希望對您有所幫助:)

這是預期的行為。 ListView重用適配器中的視圖。 因此,您想要保留一Set “選定的項目”並添加一個項目或在單擊CheckBox時將其刪除,然后在getView中添加以下代碼:

if(mSelected.contains(getItem(position)) {
    checkBox.setChecked(true);
} else {
    checkBox.setChecked(false);
}

這樣,當重復使用該行時, CheckBox將處於正確的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM