我正在研究一个ListView
,我已经在选定的项目上使用了setBackgroundColor
inside 。onItemLongClickListener
我的问题是,当我这样做并滚动时,它ListView
也在设置一些不可见子项的颜色。怎么可能解决。
问问题
940 次
3 回答
2
尝试将以下属性放入您的 xml:
`
<ListView
android:dividerHeight="1dp"
android:scrollingCache="false" >
`
于 2012-09-18T11:49:01.583 回答
1
这是因为列表视图使用旧视图以避免在滚动时重新创建视图。
事实上,这对所有的 adapterView 类都是通用的。
为了处理这个,存储视图位置的状态(使用 arrayList 或任何你想要的集合)并在 getView 上,如果位置在列表中设置为这个背景,使用这个背景,否则使用默认背景。
有关 listview 的更多信息,请阅读 API,或者(我强烈推荐)观看视频“ listView 的世界”。
于 2012-09-18T10:35:43.587 回答
0
在您的适配器类中:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(...);
}
convertView.setBackgroundColor(defaultcolor);
...
}
然而,当该视图将被重绘时,这将覆盖您在 onlongclicklistener 中设置的背景。因此,您可能希望保留单击项目的位置列表,以便您可以在 getView 方法中设置它们。
于 2012-09-18T11:07:43.423 回答