Don*_*rty 6 android listview refresh android-ui android-4.0-ice-cream-sandwich
我的Android应用程序上有一个ListView,我动态地更改了它的数据.我使用该onFilterComplete()方法来更改ListView的内容.
预冰淇淋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);
}
}});
Run Code Online (Sandbox Code Playgroud)
但是在Ice Cream Sandwhich上,当我使用过滤器时,屏幕没有正确刷新,如果过滤器返回的数量小于之前的ListView,那么旧的列表数据似乎仍然在后台可见,按照这个屏幕截图:

从屏幕截图中你可以看到ListView中第一个条目的位置,这是应该可见的所有内容,你可以看到前面的结果在下面仍然可见,这些只是可见它们不起作用,因为它们不能被点击,就像屏幕没有正确刷新一样.
当我选择主页按钮以通过主屏幕离开应用程序并返回所有内容时,应如下面的屏幕截图所示:

还有什么我必须实现以正确刷新Ice Cream Sandwhich上的ListView吗?有没有其他人遇到过类似的问题?
我在ICS之前做得很好.
为了解决这个问题,我将代码更改为以下内容:
if(adapter != null) {
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);
decLayout.invalidate();
}
}});
Run Code Online (Sandbox Code Playgroud)
其中 decLayout 是我的列表视图所在的相对布局,这似乎可以在列表视图数据更改时正确刷新屏幕。
虽然这有效,但我不能 100% 确定它是有效的修复,我想听听其他有类似问题的人的意见,并且可能有正确的修复。
| 归档时间: |
|
| 查看次数: |
1063 次 |
| 最近记录: |