我知道存在熟悉的问题我的情况有点不同。 我正在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);
}
我的问题是,当我点击项目时,其他一些项目会被着色。 为什么会这样?
答案 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"
/>