2番目のアイテムごとに異なる色を持つListViewがあります(例:白->灰色->白->灰色など)。最初は機能しているように見えますが、スクロールを開始するとすぐに背景色のレンダリング失敗したようです:他の色がアイテムにランダムに設定されています。また、もう一度上にスクロールすると、最初は色が正しかったアイテムに発生します。誰かがなぜこれが起こっているのか教えてもらえますか?
アダプターでこれを試しました:
if((position % 2) == 1) {
layoutHolder.setBackgroundColor(getContext().getResources().getColor(R.color.light_green));
}
そしてこれは私のListFragmentにあります:
private AsyncTask<Void, Void, Void> fillList = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
addListItems();
return null;
}
@Override
protected void onPostExecute(Void result) {
for (int i = 1; i < getListView().getChildCount()-1; i = i+2) {
LOGI(TAG, "for-loop " + String.valueOf(i));
getListView().getChildAt(i).setBackgroundColor(getSherlockActivity().getResources().getColor(R.color.light_green));
}
}
};
アップデート:
少しログを記録したところ、画面に表示されているよりも多くの要素を追加し、ListViews の子の数を確認すると、ListView は最初に画面に表示されている子のみを保持し、残りは次のように見えることがわかりました。スクロールが完了するとロード/追加されます。