2012-04-11 55 views
3

我的ListView有問題。當我將它選擇到我擁有的自定義繪圖中時,我想更改所選項目的背景,但它不起作用。ListView所選項可繪製

我想有這種效果的圖像是將selectedItem

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

這是list_row的文本

<!-- this layout is used to view row of category list and resturant list --> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/txt_category_row" 
    android:gravity="center" 
    android:layout_width="match_parent" 
    android:textColor="@color/BLACK" 
    android:layout_height="55dp" 
    android:padding="10dp" 
    android:text="@string/hello" 
    android:layout_marginTop="5dp" 

    android:textAppearance="?android:attr/textAppearanceLarge" /> 

這ListView的code.xml

<ListView android:id="@+id/list_category" 
    android:layout_alignParentLeft="true" 
    android:layout_height="fill_parent" 
    android:layout_width="184dp" 
    android:dividerHeight="2px" 
    android:background="@android:color/transparent" 
    android:cacheColorHint="@android:color/transparent" 
    android:layout_marginTop="5dp" 
    android:listSelector="@drawable/list_selector" 
    android:divider="@color/Gray" > 

回答

-2
dynamicListView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     //arg1 will give you that view 
     arg1.setBackgroundColor(Color.BLUE); 
    } 
}); 
+0

它的作品,但是當我選擇另一個項目..canü選擇brevious視圖逗留幫助 – Basant 2012-04-11 13:57:05

10

在觸摸模式下,沒有選擇或聚焦狀態。

但是,你可以有一個選中狀態(即使沒有複選框),並使用在「選項」來更改屬性。在您設置爲顯示您的列表定義列表視圖後,加入這行Java代碼:

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

然後在你的狀態列表XML更改此:

android:state_selected="true" 

這樣:

android:state_activated="true" 

所以,現在你應該有:

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

最後,爲您的行視圖的背景爲指向您選擇的文件:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/txt_category_row" 
    android:gravity="center" 
    android:layout_width="match_parent" 
    android:textColor="@color/BLACK" 
    android:layout_height="55dp" 
    android:padding="10dp" 
    android:text="@string/hello" 
    android:layout_marginTop="5dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:background="@drawable/item_selector" /> 

你沒有給,所以我只是用「item_selector」你的狀態列表的XML名稱。您應該使用該文件的實際名稱替換它。

+0

沒有什麼工作我..我的問題,我想用它離開所選項目的後的新背景(( – Basant 2012-04-11 22:04:28

+0

)所以你想要多個?因此它到CHOICE_MODE_MULTIPLE(我認爲這是正確的,我不在家裏)要仔細檢查 – Barak 2012-04-11 22:08:09

+0

不,你誤解我,whaat我的意思是,當我選擇項目的背景和文字顏色改變,直到我選擇另一個項目..新的選定的項目將採取的背景和文字顏色的效果和舊物品成爲正常的..什麼,我現在當我選擇它,去當我刪除我的finger..can你幫我解決這個問題,即所選擇的項目纔出現。謝謝 – Basant 2012-04-12 04:39:23

1

你應該使用CheckableFrameLayout作爲列表項視圖。你可以在這裏找到它 - CheckableFrameLayout

你可以看到那裏,當你點擊列表項時,它會將背景繪製到你想要的任何東西上。