2012-02-23 62 views
0

2つの背景色で行を並べてListViewを作成しました。アイテムをクリックして項目をクリックしたときにその背景色を変更し、項目に焦点を当てて色を変更する必要があります。 以下のコードを試しましたが、view.setBackgroundResource()がItemClickListenerの側で正しく動作しません。Android - ListViewの行の背景色の変更

if (selectedView != null) { 
    if (selectedRowIndex % 2 == 0) { 
     view.setBackgroundResource(R.color.list_secondcolor); 
    } else { 
    view.setBackgroundResource(R.color.list_firstcolor); 
    } 
    }selectedRowIndex = position; 
    selectedView = view;view.setBackgroundColor(Color.WHITE); 

その他の方法はありますか? ありがとうございます。

+0

ビューは、最初に 'setBackgroundResource'を呼び出し、' setBackgroundColor'を呼び出すことがあります。それは理由かもしれません。 – idiottiger

+0

listitemsのカラーセットはありますか?または、あなたはすべて白い色の背景になっていますか? – Hiral

+0

No.Issueは紛失後のアイテムです。アイテムは前の色にはなりません。 –

答えて

1

これはXMLで簡単に行うことができます。さまざまな状態でドロアブルを定義する必要があります。あなたの場合、リスト項目の背景色が交互になるので、2つのドロウアブルを定義する必要があります。

このドロアブルでは、リストアイテムが持つことができるさまざまな状態の色を定義します。ノーマル、フォーカス、プレス、フォーカス、プレス。次に、このドロアブルをリスト項目の背景属性に適用するだけです。

<?xml version="1.0" encoding="utf-8"?> 
     <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
      <!-- default --> 
      <item android:drawable="@color/normal_color" /> 
      <!-- focused --> 
      <item android:state_focused="true" android:drawable="@color/focused_color" /> 
      <!-- pressed --> 
      <item android:state_pressed="true" android:drawable="@color/pressed_color" /> 
      <!-- focused and pressed--> 
      <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/focused_pressed_color" /> 
     </selector>