2011-07-01 60 views
3

我一直都在網上,包括計算器,只是似乎沒有得到一個明確完整的方法來Android的列表視圖交替行的顏色,但與默認光標選擇

我想創建一個ListView是

1)具有交替的顏色(我能夠做到這一點與下面的代碼) 2)保留了Android的

默認橙色選擇行爲來完成#1我有 擴展ArrayAdapter的自定義適配器,然後我重寫getView像這樣

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

    // tableLayoutId is id pointing to each view/row in my list 
    View tableLayoutView = view.findViewById(R.id.tableLayoutId); 
    if(tableLayoutView != null) 
    { 
     int colorPos = position % colors.length; 
     tableLayoutView.setBackgroundColor(colors[colorPos]); 
    } 
} 

我對顏色的成員變量是

private int[] colors = new int[] { 0x30ffffff, 0x30ff2020, 0x30808080 }; 

跟隨文章「Android的 - 應用備用行顏色ListView中與SimpleAdapter」發現here

現在,這是我堅持,我見在stackoverflow一些提到這樣做,因爲它會看到常見的,他們建議將此屬性添加到

android:listSelector =「@ color/list_item」

其中list_item.xml會像

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
    android:drawable="@drawable/transparent" /> 
    ..... 
</selector> 

然後,我將不得不代碼添加到getView()要弄清楚我這狀態 並採取相應的行動。

有沒有一個例子可以讓這個工作?感謝所有 我會很樂意發佈我的所有使用,如果我能得到它的工作。 :-(

回答

8

一種解決方法是使用2個選擇從您的適配器,而不是設置2種顏色,可以設置2個選擇

if (position % 2 == 0) { 
    view.setBackgroundResource(R.drawable.selector_1); 
} else { 
    view.setBackgroundResource(R.drawable.selector_2); 
} 

selector_1在selector_1.xml定義是這樣的:。

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

selector_2在selector_2.xml定義是這樣的:

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

這樣,你有一個雙色麗stview和第三種顏色/形狀/你想要的選定項目。