【问题标题】:Android ICS ListView refresh issueAndroid ICS ListView 刷新问题
【发布时间】:2012-06-20 14:27:17
【问题描述】:

我的 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 之前,我的工作正常。

【问题讨论】:

  • 当您说“旧列表视图”时,您实际上只是指适配器中的旧数据,对吗?还是有多个ListViews 重叠在一起?
  • 对不起,我的意思是适配器中最后过滤的数据,布局中只有一个ListView,代码中只有一个ListView,而不是多个。,当我离开屏幕并返回ListView在第二个屏幕截图中应有的显示。
  • 在我看来,过滤器应该已经在适配器上调用 datasetChanged,所以您可能不必这样做。我不知道这是否可以解释您的问题,但值得评论并尝试一下。
  • 你能解释一下为什么你有两个适配器吗? ArrayAdapter aa1 和一个字段 adapter。它的类是什么?
  • 不幸的是,注释掉 setDataSetChanged 没有任何效果,至于 ArrayAdapter,我已经删除了,抱歉,我用它来填充弹出对话框。用户然后从弹出对话框中选择要过滤的选项,并且此字符串用于过滤器中。

标签: android listview refresh android-4.0-ice-cream-sandwich android-ui


【解决方案1】:

为了解决这个问题,我将代码更改为以下内容:

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();
    }
}});

decLayout 是我的列表视图所在的相对布局,这似乎在列表视图数据更改时正确刷新屏幕。

虽然这可行,但我不能 100% 确定它是有效的修复方法,我想听听其他有类似问题并可能有适当修复方法的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多