2010-12-03 18 views
1

私は奇妙な問題があります。私はリストビューの項目の背景色を次のように設定しています。ListViewで再生される背景色

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 

    ... 

    if (status == true) { 
     row.setBackgroundColor(Color.argb(255,0,85,187)); 
    } 
    else { 
     if (morestuff) { 
      row.setBackgroundColor(Color.argb(128,255,0,0)); 
     } 
    } 

    ... 
} 

これは動作するようです。しかし、リストビューをスクロールして戻ったときに、このコードで設定されていない別の行の色を取得した行があります。私はリストビューがビューを最適化として再利用していると思う。

どうすればこの問題を解決できますか?

答えて

1

getViewは、リストビューが描画されるときは常に呼び出されます。小さな変更を行うときに呼び出されるだけです。小さなスクロールを行う場合
色を特定の行に設定する場合は、position(getviewの最初の引数)をチェックしてください。

1

リストビューは、ビューを最適化として再利用しています。アイデアの効率的なリストビューの例を見てください。