单击列表视图时更改颜色

时间:2012-09-24 04:04:30

标签: android listview colors

我的android代码可以使用onClick事件将背景颜色更改为第一个可见listview项目的绿色,但是当我向下滚动listview并尝试单击列表时,则不会显示绿色。如何解决这个问题任何帮助将受到高度赞赏。我附上了我的代码片段。

   public void onItemClick( AdapterView<?> parent, View item,   
                                  int position, long id) {



     for(int i=0; i<parent.getChildCount(); i++)
           {
               Log.d("TAG", "Number of times printed");
                if(i == position)
                {
                          parent.getChildAt(position).setBackgroundColor(Color.GREEN);
                         // Log.d("TAG","Green at position :: " + position);

                }
                else
                {
                          parent.getChildAt(i).setBackgroundColor(Color.GRAY);
                }
            }
}  

2 个答案:

答案 0 :(得分:1)

在values文件夹

中的color.xml文件中定义颜色

在可绘制文件夹listViewBackground.xml

中使用以下代码制作xml文件
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_focused="true" 
      android:state_pressed="false" 
      android:drawable="@color/grey" />

<item android:state_focused="true" 
      android:state_pressed="true"
      android:drawable="@color/green"

       />

<item android:state_focused="false" 
      android:state_pressed="true"
      android:drawable="@color/green" />

<item android:drawable="@color/grey" />

并将此文件设置为列表项的背景

答案 1 :(得分:0)

而不是

                  parent.getChildAt(position).setBackgroundColor(Color.GREEN);

试试这个

    parent.getChildAt(position).setBackgroundColor(R.color.orange);

您需要在values.xml - vales / color.xml

中的color.xml中定义颜色
<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="orange">#e68c10</color>
</resources>

并查找您的功能尝试使用

public void onListItemClick(ListView parent,View v,int position,long id){}