2011-06-30 14 views
0

受信したメッセージのリストを表示するメッセージングアプリケーションがありますが、色で表示されていないメッセージ(黄色)を強調表示したいのに対して、他のリストアイテムはデフォルトリストアイテムのままですカラー(白)。Androidリストビューアイテムの色とスクロールの問題

私は以下のコードを使用してこれを行うことができましたが、リストをスクロールするたびに、読み込まれたかどうかにかかわらずすべてのリスト項目が表示外にスクロールすると「ハイライト」色になりますその後、ビューに戻ります。

マイリストセレクタ:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_selected="true" android:drawable="@android:color/transparent" /> 
<item android:state_pressed="true" android:drawable="@android:color/transparent" /> 
<item android:state_selected="false" android:drawable="@drawable/messageUnreadColour" /> 

設定を適用し、私の配列アダプタでの背後にある私のコード:

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

Message_ListItem entry = items.get(position); 

    ....setup list item etc 

    // Get whether the message has been read 
    if (!entry.getHasBeenRead()) { 

     // Set the colour to highlight the listitem 
     convertView.setBackgroundResource(R.drawable.message_listitem_unread); 
    } 

    return convertView; 
} 

は、私はすでに見て、リスト上のcacheColorHintの設定を削除しましたこれが役立つ場合、これは効果がありません。

私はこれを解決する方法はありますか?

答えて

1

getView()メソッドでelse節を忘れました。リストアイテムはリサイクルされるので、未読アイテムに背景を設定すると、そのアイテムは読み込みアイテムとして再利用される可能性があります。

if (!read) { setBackgroundResource(R.drawable.unread); } 
else { setBackgroundResource(R.drawable.read); } 
+0

ああありがとう、私はとても簡単な何かの上に一日の時間を無駄にしました。 – CDrnly

関連する問題