我的 Android 应用程序上有一个 ListView,可以动态更改其数据。我使用该onFilterComplete()
方法来更改 ListView 的内容。
Pre Ice Cream Sandwhich 以下代码可以正常工作:
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);
}
}});
但是,在 Ice Cream Sandwhich 上,当我使用过滤器时,屏幕无法正确刷新,如果过滤器返回的条目数小于前一个 ListView,则旧列表数据在后台似乎仍然可见,根据此屏幕截图:
从屏幕截图中,您可以看到 ListView 中的第一个条目在哪里,这就是所有应该可见的内容,您可以看到之前的结果在下面仍然可见,这些只是可见的,它们不起作用,因为它们不能被点击,就好像屏幕没有正确刷新一样。
当我选择主页按钮以通过主屏幕离开应用程序并返回时,所有内容都会出现,如下面的屏幕截图所示:
还有什么我必须实施才能正确刷新 Ice Cream Sandwhich 上的 ListView 吗?有没有其他人遇到过类似的问题?
我在 ICS 之前工作得很好。