我正在使用ListView
我在所选项目setBackgroundColor
内使用了onItemLongClickListener
。我的问题是,当我这样做并滚动时,它也会设置一些ListView
的隐形孩子的颜色。怎么解决呢。
答案 0 :(得分:2)
尝试在xml中添加以下属性:
`
<ListView
android:dividerHeight="1dp"
android:scrollingCache="false" >
`
答案 1 :(得分:1)
这是因为列表视图使用旧视图以避免在滚动时重新创建视图。
实际上,这对所有的adapterView类都是通用的。
为了处理这个,存储视图位置的状态(使用arrayList或你想要的任何集合)和getView,如果列表中的位置设置为此背景,请使用此背景,否则使用默认背景。
有关listview的更多信息,请阅读API,或者(我强烈推荐)观看视频“the world of listView”。
答案 2 :(得分:0)
在适配器类中:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(...);
}
convertView.setBackgroundColor(defaultcolor);
...
}
但是,当重绘该视图时,这将覆盖您在onlongclicklistener中设置的背景。因此,您可能希望保留所单击项目的位置列表,以便在getView方法中设置这些位置。