1

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

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

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

convertView.setBackgroundColor(Color.LTGRAY)

这是设置颜色的正确方法吗?如果不是我还能用什么。

提前致谢。

斯瓦普尼尔·达拉尔。

4

3 回答 3

1

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

1.为itemview编写一个选择器,在按下状态下将背景设置为透明,然后将选择器设置为itemview的背景。

<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的背景。

于 2012-10-30T15:15:55.847 回答
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>

谢谢,

斯瓦普尼尔·达拉尔。

于 2012-11-05T05:58:18.263 回答
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);

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

希望这会有所帮助。否则放一些更多的代码。

于 2012-10-30T13:02:58.673 回答