2012-02-23 228 views
0

我創建了一個列兩個背景顏色逐行的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 2012-02-23 09:59:46

+0

你有任何listitems顏色集?或者你正在獲得所有與白色背景? – Hiral 2012-02-23 10:03:59

+0

編號在失去焦點之後,它不會轉到其以前的顏色。 – 2012-02-23 10:07:09

回答

1

您可以通過XML輕鬆完成此操作。你必須定義一個具有不同狀態的drawable。在你的情況下,由於列表項的背景顏色應該交替出現,所以你必須定義兩個可繪製的。

在此可繪製項中,您可以定義列表項可以具有的不同狀態的顏色。正常,集中,按下,聚焦和按下。然後,只需將此可繪製應用於列表項的背景屬性即可。

<?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>