2011-12-30 1 views
1

が... Aが奇数の項目が#ffffff背景とさえアイテムが#f2f7f7を持っていたListViewを、持っている背景色を変更する、となります。リストビュー項目は次のように私は自分のアプリケーションで奇妙な振る舞いを抱えている

Activity start OR touching list (without release)

しかし、できるだけ早く私は、リストをスクロールし始めると、でもアイテム少しこのように、#f7f7f7になって、色を変更します。

When scrolling and after scroll release

何か案は?詳細が必要な場合は、お問い合わせください。私はこの振る舞いでうんざりしています。

追加情報:

私はこのように、getView()方法では、各項目の背景色を設定しています:

protected final int[] colors = new int[] { R.drawable.states_list_odd, R.drawable.states_list_even }; 
... 
// Alternates list items' background 
int colorPos = position % colors.length; 
convertView.setBackgroundResource(colors[colorPos]); 

答えて

4

実際には単純なものです。 android:scrollingCache="false"がこの問題を解決しました。

2

リストをスクロールしたときに再利用されているアイテムに使用ビュー(新しいものを作成する必要はありません)。したがって、リストをスクロールすると、位置0の項目が位置10にレンダリングされます。同じViewオブジェクトになり、convertViewパラメータがこの特定のViewに設定されてgetViewが呼び出される前に、データで(そしてあなたのスタイルを指定して)。単なる最適化です。

したがって、リスト・アダプターでgetViewが呼び出されるたびに、項目の背景色を指定する必要があります。

+0

私の質問が更新され、 'getView()'で各項目の背景色を設定する方法を示しました。 – gnclmorais

1

プログラムで試してみてください。 yourListView.setScrollingCacheEnabled(false);