每当点击列表中的任何项目时,我都会尝试更改listview中的背景颜色。
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int pos,
long arg3) {
listView.getChildAt(pos).setBackgroundResource(R.color.GREY);
}
});
但是,这段代码没有按预期工作。它表现不稳定。有时,它会同时更改两个项目的背景,如果我向下拖动列表,则会重置已经更改的颜色项。
有人可以帮我吗?
THX! 拉胡
答案 0 :(得分:1)
在代码中使用它,
将此xml文件放在drawable文件夹中(您可以根据需要更改颜色)。
<强> listselector.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true">
<item android:state_focused="false" android:state_pressed="false">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="2dp" android:color="@android:color/transparent" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
<item android:state_focused="true" android:state_pressed="false">
<shape android:shape="rectangle">
<solid android:color="@color/listitemfocus"/>
<stroke android:width="4dp" android:color="@android:color/transparent" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/listitempress"/>
<stroke android:width="4dp" android:color="@android:color/transparent" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
</selector>
在您的主要布局中使用listview android:listSelector:
<ListView
android:id="@+id/listView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_below="@+id/parent_image_view"
android:layout_centerHorizontal="true"
android:cacheColorHint="@android:color/transparent"
android:listSelector="@drawable/listselector"
android:scrollbars="none" />
答案 1 :(得分:0)
这种情况正在发生,因为列表视图(行)的项目将被回收用于性能改进...如果视图不在屏幕中...那么而不是为下一个元素创建新视图..前一个视图显示使用新内容...所以你应该跟踪你要更改颜色的项目... You can see this example... I think it helps ...他正在使用一个视图类...来管理数据..你可以把colcour的变量也..并检查项目的背景颜色..