0

我的 android 代码可以通过 onClick 事件将第一个可见列表视图项目的背景颜色更改为绿色,但是当我向下滚动列表视图并尝试单击列表时,绿色不会出现。如何解决这个问题任何帮助将不胜感激。我附上了我的代码片段。

   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);
                }
            }
}  
4

2 回答 2

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" />

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

于 2012-09-24T07:15:01.120 回答
0

代替

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

尝试这个

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

您需要在 values 文件夹中的 color.xml 中定义您的颜色 - vales/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){}
于 2012-09-24T04:38:45.640 回答