2015-11-03 23 views
0

我有列表視圖,我在其中設置替代背景顏色。現在我想在列表項目單擊時使用列表選擇器。 這是我設置使用光標適配器列表選擇器在android中不工作

的CursorAdapter

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

    final View row = super.getView(position, convertView, parent); 
    if (position % 2 == 0) 
     row.setBackgroundColor(Color.parseColor("#191919")); 
    else 
     row.setBackgroundColor(Color.parseColor("#323232")); 
    return row; 

} 

list_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/list_item_bg_normal" android:state_activated="false"/> 
    <item android:drawable="@drawable/list_item_bg_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/list_item_bg_pressed" android:state_activated="true"/> 
</selector> 

list_item_的getView()替代背景的方式bg_pressed.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#FF0000" /> 
</shape> 

list_item_bg_normal.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#00000000" /> <!-- transparent --> 
</shape> 

,最後我有我都用我的listSelector列表視圖。

activity.xml

<ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/myListView" 
     android:listSelector="@drawable/list_selector" 
     android:drawSelectorOnTop="true" 
     android:clickable="true"/> 

我無法解決這個問題。我不知道我錯在哪裏。我的屏幕
輸出是這樣

enter image description here

+0

你面對請註明什麼問題。 –

+0

listSelector不起作用。 –

+0

檢查此:http://stackoverflow.com/questions/18386035/custom-selector-for-list-background –

回答

0

最後,我找到了答案。我創建了兩個選擇器XML文件以提供備用背景。看到這個。

selector_one

<?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/black1" /> 
    <item android:state_pressed="true" android:drawable="@android:color/holo_red_dark" /> 
    <item android:state_selected="true" android:state_pressed="false" android:drawable="@android:color/holo_red_dark" /> 
</selector> 

selector_two

<?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/black2" /> 
    <item android:state_pressed="true" android:drawable="@android:color/holo_red_dark" /> 
    <item android:state_selected="true" android:state_pressed="false" android:drawable="@android:color/holo_red_dark" /> 
</selector> 

和在適配器我稱兩個選擇器的getView()方法。

if (position % 2 == 0) { 
    convertView.setBackgroundResource(R.drawable.selector_one); 
} else { 
    convertView.setBackgroundResource(R.drawable.selector_two); 
} 

我參考了從這個Link

0
Try like this instead of drawable: 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="#00000000" android:state_activated="false"/> 
    <item android:drawable="#FF0000" android:state_pressed="true"/> 
    <item android:drawable="#FF0000" android:state_activated="true"/> 
</selector> 
+0

不,你不能在drawable中使用顏色。看到我有這個錯誤。 '顏色類型不允許('可繪製',值爲'#00000000')。' –

+0

請投我的問題。 –