Android ListView不显示任何反馈

Android ListView不显示任何反馈,android,android-sdk-2.1,Android,Android Sdk 2.1,我偶然发现ListView有一个奇怪的问题 在emulator中,当按下项目进行选择时,ListView不显示任何反馈。我想我已经在现实中看到了,但我不确定。我希望列表项在按下时被选中(背景颜色较深),这样用户就可以看到他按下了哪个项 我必须给它编码吗 RG 看到评论后,我尝试了以下方法: 我创建了一个文件res/color/backgroundstate.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:an

我偶然发现ListView有一个奇怪的问题

在emulator中,当按下项目进行选择时,ListView不显示任何反馈。我想我已经在现实中看到了,但我不确定。我希望列表项在按下时被选中(背景颜色较深),这样用户就可以看到他按下了哪个项

我必须给它编码吗

RG

看到评论后,我尝试了以下方法:

我创建了一个文件res/color/backgroundstate.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
          android:color="#888"/>
    <item android:state_pressed="true"
          android:color="#888"/>
    <item android:color="#eee"/>
</selector>

然后我在listitem.xml中使用它作为背景色

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/helptextcolor"
    android:background="@color/backgroundstate"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

当我用

    ArrayAdapter adapter=new ArrayAdapter<String>(this,R.layout.listitem,names);
    LV.setAdapter(adapter);
    LV.invalidate();
ArrayAdapter adapter=新的ArrayAdapter(this,R.layout.listitem,names);
低压设置适配器(适配器);
LV.invalidate();
程序崩溃了

有三个例外与此相关。但问题似乎是XMLPullParserException的最后一个问题:

<item> tag needs a drawable.
标记需要一个可绘制的。

现在?

是和否。不是你必须编码它,而是你必须不禁用它

如果使用自定义视图显示列表项,则必须放置一个可绘制视图,以允许视图在选中时提供反馈。例如,一个普通位图不会

最简单的方法是创建一个可绘制的状态列表,如下所示:

listview条目的行为与示例中描述的按钮类似。如果您的背景可绘制文件包含一个状态“已按下可绘制文件”,则应在按下列表项时显示该状态。

确实需要可绘制文件,而不是颜色。为此,您需要一个可绘制的颜色,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="#FFFF0000" />
</shape>

…然后将其放入您的项目列表中。
此外,这是可绘制的,因此,它必须位于
/res/drawable-*
目录中,而不是
/res/color/
目录中

总而言之:

  • (可选)使用名称将颜色放入/res/values/color.xml文件中
  • 在/res/drawable目录中,用xml创建两个形状可绘制文件,一个用于中性颜色,一个用于按下的颜色,方式如上所示
  • 在/res/drawable目录中创建一个可绘制的状态列表
  • 将其用作列表项的背景

    • 我已经解决了这个问题


      请参见此处:

      我的列表项是文本视图。或者更确切地说,我为项目使用了一个布局,它是一个简单的文本视图,并为指向该布局的ListView使用了一个ArrayAdapter。那么,我如何突出显示TextView呢?您可以将一个可绘制的状态列表作为您的TextView的背景。状态列表背景的突出显示功能不仅限于按钮,事实上它适用于任何视图。啊,我明白了。听起来有点过火了,是表演的休息。我刚刚发现R.layout.simple\u list\u item\u 1可以完成这项工作。但我不能使用它的颜色和字体大小。我尝试了一个颜色状态列表,但它只适用于绘图。我暂时放弃,因为我不想为了得到两种颜色而用背景图像编写代码。颜色状态列表可以工作。只需将其作为您视图的背景,这就是可绘图的用途。至于性能,如果您不放置背景,框架将为您放置默认背景。不是更快。