如何在onListItemClick方法上为Android上的ListView选定项目着色

时间:2015-09-27 00:42:28

标签: java android listview

我知道存在熟悉的问题我的情况有点不同。 我正在android上实现ListView。 该方法在点击时应该为项目着色。

@Override
    protected void onListItemClick(ListView l, View v, int position, longid) {
        super.onListItemClick(l, v, position, id);
        Language lng = lng.get(position);
        l.getChildAt(position).setBackgroundColor(Color.GREEN);
    }

我的问题是,当我点击项目时,其他一些项目会被着色。 为什么会这样?

1 个答案:

答案 0 :(得分:1)

  

为什么会这样?

它的发生是因为ListView's recycling mechanism

  

l.getChildAt(position)和v之间是否存在差异?   本身?

没有

要解决您的问题,我建议您使用Selector根据状态更改行颜色。

例如:

1)创建一个选择器xml文件: listview_selector.xml

 <?xml version="1.0" encoding="utf-8"?>

    <selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:state_focused="true"
        android:drawable="@drawable/listview_selector_focused" />

    <item
        android:state_pressed="true"
        android:drawable="@drawable/listview_selector_pressed" />

    </selector>

2)将选择器添加到ListView:

<ListView
   ...
   android:listSelector="@drawable/listview_selector"
/>