我認爲這個問題值得一讀,在我看來......我試圖詳細解釋,但是爲了減輕閱讀難度。無法弄清楚爲什麼背景顏色在滾動時會出現不規則的行爲ListView
我有一個自定義
CursorAdapter
填充的ListView
。在
bindView()
方法中,我嘗試設置孩子的顏色。這個孩子是
LinearLayout
,這是用於列表中項目的根佈局。它在XML文件R.layout.list_item
中,在自定義CursorAdapter的newView()
方法中誇大。我使用下面的代碼設置背景顏色。
LinearLayout root = (LinearLayout) view.findViewById(R.id.list_item_root); // ... if (isEvenDay(cal)) { tvDate.setText(tvDate.getText() + " *"); root.setBackgroundColor(Color.DKGRAY); }
不要擔心的,如果塊什麼以外setBackgroundColor
。你會看到的。
預期行爲:有些孩子會被塗上DKGRAY
,並且會將*附加到某個textView。其他人將是默認顏色,並沒有這個*。我使用這個*標籤只是爲了確保它不是(直接)我的代碼。
行爲:當ListView最初顯示時,它看起來很好,如預期的那樣。當我滾動列表時,它會變得「怪異」(我不明白),有些孩子會開始改變顏色,直到所有的孩子都被塗上了顏色爲DKGRAY
。
現在,最糟糕的是,這個工程:
LinearLayout root = (LinearLayout) view.findViewById(R.id.list_item_root);
// ...
if (isEvenDay(cal)) {
tvDate.setText(tvDate.getText() + " *");
root.setBackgroundColor(Color.DKGRAY);
} else {
root.setBackgroundColor(Color.GRAY);
}
正確的兒童得到畫DKGRAY和灰色,並滾動列表不會榜上無名顏色去瘋狂。顏色不會改變,一切似乎都沒問題。當然,除了DKGRAY和GRAY之外,我想要DKGRAY,讓其他孩子獨自一人。 ¬¬
請幫幫我!
下面的圖片。查看第一列中的*如何在不同日期之間正常工作,但顏色沒有。
1 - 我開始滾動,有的孩子已經有缺陷:
2 - 我完成上下滾動,並最終所有的孩子是有缺陷的:
3 - 但是當我爲所有孩子設置顏色時,滾動不會將其擰緊:
我懷疑這個whooooole問題可能很簡單。但是當你無法弄清楚的時候,你無法想象它...... – davidcesarino