2012-09-18 40 views
2

我正在使用ListView,并且我在onItemLongClickListener内使用了setBackgroundColor。我的问题是,当我这样做和滚动时,它也设置ListView的一些看不见的孩子的颜色。它如何解决。ListView onItemLongClickListener无法正常工作

+1

里面你listadapter,你从标签让你convertview?它可能会保留你在那里设置的背景颜色? – ePeace

+0

发布相关代码。在scroolling时间 – adneal

+0

想要颜色隐形? –

回答

1

这是由于listview使用旧视图以避免滚动时重新创建视图而引起的。

实际上,这是所有adapterView类共有的。

为了处理这个问题,存储视图位置的状态(使用arrayList或你希望的任何集合)和getView上,如果在列表中设置位置为这个背景,使用这个背景,否则使用默认背景。

欲了解更多关于listview的信息,请阅读API或(并且我极力推荐它)观看视频“the world of listView”。

0

在您的适配器类:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if(convertView == null) { 
     convertView = inflater.inflate(...); 
    } 
    convertView.setBackgroundColor(defaultcolor); 
    ... 
} 

然而,这将覆盖在onlongclicklistener设置时的看法是重绘背景。因此,您可能希望保留点击项目位置的列表,以便您可以在getView方法中设置它们。

2

尝试把下面的属性在你的XML:

`

<ListView  
     android:dividerHeight="1dp" 
     android:scrollingCache="false" > 

`