我在我的Android应用程序上有一个ListView,可以动态更改数据。我使用onFilterComplete()
方法来更改ListView的内容。Android ICS ListView刷新问题
预冰淇淋三明治下面的代码工作正常:
if(adapter != null) {
adapter.notifyDataSetInvalidated();
lview3.invalidateViews();
adapter.getFilter().filter(aa1.getItem(item), new Filter.FilterListener() {
public void onFilterComplete(int count) {
adapter.notifyDataSetChanged();
if(lview3.getCount() == 0){
lview3.setVisibility(View.GONE);
}
else{
lview3.setVisibility(View.VISIBLE);
}
}});
然而冰淇淋三明治当我使用过滤器的屏幕不会在刷新正确,如果过滤器返回的条目数是比以前的ListView较小然后将旧表的数据似乎仍然可见的背景下,按照这个屏幕截图:
从屏幕截图,你可以看到在第一项ListView是,这应该是可见的,你可以看到之前的结果在底下仍然可见,这些只是可见的,它们不起作用,因为它们无法被窃听,就好像屏幕没有正确刷新。
当我选择home键离开通过主屏幕上的应用程序并返回看来一切,因为它应该在下面的屏幕截图:
有没有别的东西,我得落实正确刷新冰淇淋Sandwich上的ListView?有没有其他人遇到类似的问题?
我在ICS前工作得很好。
当你说“旧的listview”时,你真的只是指适配器中的旧数据,对吧?或者有多个'ListView'在彼此之上? –
对不起,我的意思是适配器中最后一次过滤的数据,在布局中只有一个ListView,并且只有一个ListView在代码中,而不是多个。当我离开屏幕并返回ListView时,它应该在第二个屏幕截图。 –
正如我所见,过滤器应该已经在适配器上调用了datasetChanged,因此您可能不必这样做。我不知道这是否可以解释您的问题,但值得注释和尝试。 –