ListView onItemLongClickListener无法正常工作

时间:2012-09-18 09:21:02

标签: android android-listview

我正在使用ListView我在所选项目setBackgroundColor内使用了onItemLongClickListener。我的问题是,当我这样做并滚动时,它也会设置一些ListView的隐形孩子的颜色。怎么解决呢。

3 个答案:

答案 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方法中设置这些位置。