我的适配器上的notifyDataSetChanged() 不更新列表视图,为什么?

2023-12-15

我有一个扩展listactivity的活动,在这个类中扩展我有一个扩展baseadapter的类。

现在在我的列表活动中我有这个 onCreate

 /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);
    setListAdapter(new BuildingAdapter(this));

    final ProgressDialog loading = new ProgressDialog(this);
    loading.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    loading.setTitle("Laddar");
    loading.setMessage("Hämtar data från servern");
    loading.show();

    new AsyncTask<Void, Void, DataPacket.Data>()
    {
        @Override
        protected DataPacket.Data doInBackground(Void... params){
            return ServerConnection.getBuildings();
        }

        @Override
        protected void onPostExecute(DataPacket.Data param) {
            ((MainenanceApplication)getApplication()).setDataStructure(param);
            loading.dismiss();
            //((BuildingAdapter)getListAdapter()).notifyDataSetChanged();
            setListAdapter(new BuildingAdapter(BuildingSelectionActivity.this));
        }

    }.execute();
}

这按预期工作,但我的问题是在 onPostExecute 中我更新了列表适配器使用的数据结构。 为什么我不能直接调用notifyDataSetChanged?

如果我有该行,视图不会自行更新,但如果我使用 setListAdapter 下的行,则一切正常。


如果适配器已经设置,再次设置将不会刷新列表视图。相反,首先检查列表视图是否有适配器,然后调用适当的方法。

我认为在设置列表视图时创建适配器的新实例不是一个好主意。相反,创建一个对象。

BuildingAdapter adapter = new BuildingAdapter(context);

    if(getListView().getAdapter() == null){ //Adapter not set yet.
     setListAdapter(adapter);
    }
    else{ //Already has an adapter
    adapter.notifyDataSetChanged();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的适配器上的notifyDataSetChanged() 不更新列表视图,为什么? 的相关文章

随机推荐

  • 在 firebase 上构建数据的最佳方式是什么?

    我是 firebase 的新手 我想知道构建数据的最佳方式是什么 我有一个简单的例子 我的项目有申请人和应用程序 1个申请人可以有多个申请 我如何在 firebase 上关联这两个对象 它像关系数据库一样工作吗 或者在数据设计方面需要完全不
  • 如何将外部样式表链接到多个页面和文件夹?

    我正在构建一个相当大的网站 其中有很多页面和文件夹 我有 1 个样式表 如何将样式表添加到这些文件夹的 全部 在我开始将页面放入单独的文件夹中之前 我没有遇到此问题 现在每个页面都有自己的文件夹 它不再读取我的样式表 除非它位于同一文件夹中
  • Delphi XE2 的 FastString 替代品

    当我问这个问题不久前 FastString 单元来解决我的问题 现在我开始将我的软件从 D7 迁移到 XE2 我的问题是 既然 FastString 似乎不再能解决问题 我现在有什么替代方案 或者 更乐观的是 Delphi 本身是否解决了这
  • Git 和多个存储库

    我正在使用 github 来存储我的 PowerShell 配置文件 我发现posh vcs我想在我的实际实现之上使用它 我希望能够合并来自posh vcs到我现在的环境 处理这个问题的最佳方法是什么 我的文件只有一个存储库 而另一个文件夹
  • 使用泛型时无法解析方法

    我正在尝试为我的项目实现一棵树 该树将包含经过一些移动后处于不同棋盘状态的节点 现在我的项目结构如下 src Agent Support Test Threes Tree java Some class java some class Bo
  • 修复 Sublime Text 2 行结尾?

    这是我的Settings User config auto indent true color scheme Packages Color Scheme Default Twilight tmTheme default line endin
  • MyFaces Facelet 包含中的 NullPointerException

    我正在尝试从以下位置迁移简单的 JSF2 2 原型Mojarra2 2 5 工作正常 MyFaces2 2 3 但是空指针异常 occurs 我通常使用 Mojarra 做的是包含 注入 以编程方式容器内的 JSF 页面 示例包含页面 包含
  • JOIN 比 WHERE 更快吗?

    假设我有两个链接的表 一个表有另一个表的外键 CREATE TABLE Document Id INT PRIMARY KEY Name VARCHAR 255 CREATE TABLE DocumentStats Id INT PRIMA
  • 可变高度的浮动元素将兄弟姐妹向下推

    我有 6 个元素 应该会产生两行 每行 3 个元素 所以我将它们浮动 但元素的内容变化很大 当一个较高的元素阻止后续同级元素一直向左浮动时 布局就会中断 这是 CSS 示例 figure width 30 float left margin
  • n 个皇后的快速启发式算法 (n > 1000)

    我写了两个程序 通过回溯算法将棋盘上的 n 个皇后放在一起 没有任何威胁 但这对于大 n 来说非常沉重 最后你可以运行 100 个皇后 通过爬山算法将棋盘上的 n 个皇后放在一起 没有任何威胁 这个算法比过去的解决方案更好 但是 300 个
  • Jasmine 测试在 VS2012 + Resharper + PhantomJS 中运行失败

    我尝试在 vs2012 的 resharper 7 中运行 jasmine 单元测试 但失败了 resharper phantomjs is running it in autogenerated url which maybe the c
  • 在 Linux 3.x 上挂钩 sys_execve()

    我正在尝试挂钩sys execve 通过修改系统调用表来实现Linux 3 x内核上的功能 问题是sys execve 仅当执行失败时才返回错误代码 使用我正在使用的包装函数 见下文 当sys execve 在有效的可执行文件上调用 它执行
  • 将 json 数据转换为 HTML 表格

    我在 php 中有一个数据数组 我需要在 HTML 表中显示这些数据 以下是示例数据集的样子 Array Array comparisonFeatureId gt 1182 comparisonFeatureType gt Category
  • webBrowser.Navigate 同步

    我想同步调用 webBrowser Navigate string urlString 其中 webBrowser 是 Windows 窗体控件 我这样做 private delegate void NavigateDelegate str
  • psinfo_t Solaris 在其字段中不包含完整的进程名称

    将进程信息从 psinfo 数据文件 proc d psinfo 从 Solaris 中的 procfs h 读取到 struct psinfo t 时 未在 psinfo t 结构的字段 pr fname 中获取完整进程名称 完整的 ps
  • 如何正确终止 dll 内的挂起线程?

    大家好你们好 我有一个包含错误的第三方库 当我调用一个函数时 它可能会挂起 库函数在 dll 内部调用 我决定将调用移至线程中并等待一段时间 如果线程完成则确定 如果不是 我应该强制终止它 这里的简化示例 unsigned Counter
  • 使用 Unity 进行通用依赖注入

    我们将现有的日志记录库包装在 C 应用程序中我们自己的日志记录服务中 以便使用针对某些日志记录情况的预定义方法来包围它 public class LoggingBlockLoggingService ILoggingService priv
  • 如何使用 PHP 获取从 cPanel 到我的网站的磁盘空间使用情况和每月带宽传输

    我想知道如何以与登录 cPanel 帐户时显示的方式相同的方式在我的网站上显示 获取 磁盘空间使用情况和每月带宽传输 cPanel 是否有为此提供的 api 或者这是这样做的通用方法 我正在使用 PHP cPanel WHM 有一个 API
  • SonarQube“权限不足”

    自更新到 5 x 以来 由于 权限不足 问题 我们的许多构建作业目前都失败了 该问题应在 SonarQube 5 1 中解决 如中所述here但要么它实际上没有修复 要么存在另一个与我们当前运行 SonarQube 5 1 1 相同的错误的
  • 我的适配器上的notifyDataSetChanged() 不更新列表视图,为什么?

    我有一个扩展listactivity的活动 在这个类中扩展我有一个扩展baseadapter的类 现在在我的列表活动中我有这个 onCreate Called when the activity is first created Overr