Android中的多色列表的列表选择器

时间:2012-10-30 12:57:36

标签: java android android-layout android-ui

我的android应用程序中有一个列表。列表项是自定义对象,根据自定义对象属性,将决定列表项颜色。

现在问题是,当我为这样的列表选择任何项目时,不会显示列表选择器。

如何解决此问题?要设置列表项颜色,我在适配器中使用以下方法。

convertView.setBackgroundColor(Color.LTGRAY

这是设置颜色的正确方法吗?如果不是我可以使用的其他东西。

提前致谢。

Swapnil Dalal。

3 个答案:

答案 0 :(得分:1)

您可以通过两种方式解决此问题:

1。为项目视图编写一个选择器,将背景设置为按下状态中的透明,然后将选择器设置为项目视图的背景。

<item android:state_enabled="true"
      android:state_pressed="false"
      android:drawable="@color/gray" />

<item android:state_enabled="true" 
      android:state_pressed="true"
      android:drawable="@color/transparent" />

2。删除listselector,只需为itemview编写一个选择器,其中包含不同状态所需的颜色,并将其设置为itemview的背景。

答案 1 :(得分:0)

请添加您的getView方法代码,以便我们为您提供更好的帮助。我们犯的一个常见错误是,我们并不总是为列表视图中的每个项创建新视图,以加载不同的布局列表项。

例如,相同的迭代列表的常用方法:

if(view == null)
{
    vi = inflater.inflate(R.layout.fb_list_row, parent, false);
}

对于不同的对象列表视图项,您需要删除if语句;

vi = inflater.inflate(R.layout.fb_list_row, parent, false);

然后对每个列表项进行更改..

希望这会有所帮助。还有更多的代码。

答案 2 :(得分:0)

我得到了这个问题的解决方案,

我为应用程序中的不同对象创建了不同的xml文件。 所以在适配器的getView中,根据条件,我们可以加载其中一个xml。

示例:

`if(true) {
    convertView.setBackgroundResource(R.drawable.firstxml);
 }
 else {
    convertView.setBackgroundResource(R.drawable.secondxml);
 }`

在这些xmls中,我们可以根据需要指定颜色。

示例:

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

谢谢,

Swapnil Dalal。