如何从ListView更改所选项目的颜色?

时间:2014-11-11 10:21:33

标签: java android listview

我创建了一个android项目,其中我有一个包含6个项目的列表视图。 我希望每当我从列表中选择任何项目时,它都会变为橙色,直到我按下提交按钮为止。

代码是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.SafeWalkApp.SecondActivity" >

     <ListView
        android:id="@+id/sampleListView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="5dp"
        android:background="@android:color/transparent"
        android:cacheColorHint="@android:color/transparent"
        android:divider="#CCCCCC"
        android:dividerHeight="1dp"
       android:entries="@array/vol_list" >
    </ListView>

     <Button
         android:id="@+id/onsubmit"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         android:layout_centerHorizontal="true"
         android:text="@string/submit" />

</RelativeLayout>

这是我的xml代码。 我已经尝试将颜色添加到 color.xml ,但这显示了一条错误消息,基本上是针对背景信息。所以请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

如果您使用的是自定义列表视图并且自定义适配器设置了项目,那么您可以更改

中列表视图项的颜色

nList =(ListView)findViewById(android.R.id.yourlistname);     nList.setOnItemClickListener(new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {

    }
});

在上面的函数中,nList是你想要进行更改的列表,在它的on click listner中,你可以像参数arg1一样获得所选的项目视图,从中你可以得到线性布局及其它所有其他根据需要控制和更改任何控件颜色,文本等

在此处获取视图,并通过获取视图并设置其背景等设置所需的任何颜色。 我不能在这里写完整个代码,但我希望你能得到我的?

答案 1 :(得分:0)

您必须创建状态可绘制颜色。还有一些xml.files根据行的状态定义不同的颜色。

也许这可以帮到你。

How to change color of ListView items on focus and on click

Android LinearLayout with color resource: What am I doing wrong?

答案 2 :(得分:0)

  1. 创建一个包含适配器项所需的所有信息的类+一个布尔变量,您要检查适配器getView,如果该变量为true,则将颜色更改为橙​​色,否则为正常颜色
  2. 在onItemClick中查找您给适配器的列表中正确对象的位置并更改其布尔值。
  3. 之后刷新适配器引用列表。
  4. 在适配器上调用notifyDataSetChanged()。现在根据要点(1),适配器将检查项目的布尔值并将其颜色更改为橙​​色。