2012-04-11 59 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

你可以看到那里,当你点击列表项时,它会将背景绘制到你想要的任何东西上。