Android:notifyDataSetChanged();不工作

2023-12-08

我在服务器中有一个数据库,我从平板电脑上从数据库中的一个表中获取一些值。我将此信息正确加载到列表中,但我想知道为什么当发生更改时,即使我使用也没有任何反应notifyDataSetChanged();。我必须说,为了加载加载数据,您使用 AsyncTaskClass 所以,我的问题是我不知道是否使用notifyDataSetChanged();方法正确,因为如果有变化我想刷新图像。这是该类的部分代码:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.all_candidatos);


        candidatosList = new ArrayList<HashMap<String, String>>();

        new CargarCandidatos().execute();
    }


//  public void timer(){
//       new CountDownTimer(tiempo, 100) {
//
//              public void onTick(long millisUntilFinished) {
//                  
//              }
//
//              public void onFinish() {
//              //  new CargarCandidatos().execute();
//
//              }
//           }.start();}



    /**
     * Background Async Task to Load all product by making HTTP Request
     * */
    class CargarCandidatos extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Monitorizacion.this);
            pDialog.setMessage("Loading ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        /**
         * getting All products from url
         * */
        protected String doInBackground(String... args) {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            JSONObject json = jParser.makeHttpRequest(url_candidatos, "GET", params);

            Log.d("Candidatos: ", json.toString());

            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {

                    candidatos = json.getJSONArray(TAG_CANDIDATOS);

                    for (int i = 0; i < candidatos.length(); i++) {
                        JSONObject c = candidatos.getJSONObject(i);

                        // Storing each json item in variable
                        String nserie = c.getString(TAG_NSERIE);
                        String dni = c.getString(TAG_DNI);
                        String nombre = c.getString(TAG_NOMBRE);
                        String test = c.getString(TAG_TEST);
                        String pregunta = c.getString(TAG_PREGUNTA);
                        String bateria = c.getString(TAG_BATERIA);

                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        map.put(TAG_NSERIE, nserie);
                        map.put(TAG_DNI, dni);
                        map.put(TAG_NOMBRE, nombre);
                        map.put(TAG_TEST, test);
                        map.put(TAG_PREGUNTA, pregunta);
                        map.put(TAG_BATERIA, bateria);

                        // adding HashList to ArrayList
                        candidatosList.add(map);
                    }
                } 
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
            runOnUiThread(new Runnable() {
                public void run() {
                    /**
                     * Updating parsed JSON data into ListView
                     * */
                    adapter = new SimpleAdapter(
                            Monitorizacion.this, candidatosList,
                            R.layout.list_item, new String[] { TAG_NSERIE,
                                    TAG_DNI, TAG_NOMBRE, TAG_TEST, TAG_PREGUNTA, TAG_BATERIA},
                            new int[] { R.id.id, R.id.dni, R.id.nombre, R.id.test, R.id.pregunta, R.id.bateria});
                    setListAdapter(adapter);
                    adapter.notifyDataSetChanged();
                //  timer();
                }
            });

        }

    }
}

主要原因之一notifyDataSetChanged()不会为你工作 - 是,

您的适配器失去了对您的列表的引用.

当你第一次初始化Adapter它需要你的参考arrayList并将其传递给其超类。但是如果你重新初始化现有的arrayList它失去了参考,因此失去了与Adapter.

创建新列表并将其添加到Adapter。始终遵循以下准则:

  1. 初始化arrayList同时在全球范围内进行宣布。
  2. 直接将 List 添加到适配器,而不检查 null 值和空值。直接将适配器设置到列表中(不检查任何条件)。适配器保证您无论何时更改适配器的数据arrayList它会照顾它,但永远不会 失去参考。
  3. 始终修改 arrayList 本身中的数据(如果您的数据是全新的,那么您可以调用adapter.clear() and arrayList.clear()在实际将数据添加到列表之前)但不要设置适配器,即如果新数据填充在arrayList不仅仅是adapter.notifyDataSetChanged()

忠实于文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:notifyDataSetChanged();不工作 的相关文章

  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位

随机推荐

  • 如何将自定义文件浏览器/上传器与 CKEditor 集成?

    官方文档不太清楚 将自定义文件浏览器 上传器与 CKEditor 集成的正确方法是什么 v3 不是 FCKEditor 首先在实例化 CKEditor 时注册您的自定义浏览器 上传器 您可以为图像浏览器和一般文件浏览器指定不同的 URL
  • Gnuplot pm3d 未绘制所有数据

    我有一个如下所示的文本文件 0 0 1 0 1 1 1 0 1 1 1 1 我正在策划这个with pm3d调色板中的颜色数量设置为两种 我期待的是四个正方形 两个白色和两个黑色 位于相对的角落 然而 当我绘制这个图时 我只得到一个 1 x
  • 如何在groovy中修改JSON

    我使用 JsonBuilder 构建 JSONObject String 但是 如何更新 更改此 JSONObject String 中的一个字段的值 我没有看到使用 JsonBuilder 执行此操作的可能性 那我用什么节目呢 If yo
  • 我无法从 Android 应用程序调用 servlet

    这是我的安卓应用程序 package org me sampleandroidservlet import android app Activity import android os Bundle import android widge
  • Android 中使用千位分隔符 (,) 格式化的“EditText 和 TextView”

    当我在 editText 中输入时 我想要在 EditText 中使用千位分隔符 之后 我将对数字进行一些操作 然后通过千位分隔符 在 TextView 中显示结果 这是我的代码 public class Mainactivity exte
  • 手动激活选项卡 jquery ui 1.10.3

    我真的很生气 我搜索了jquery uidoc和 stackoverflow 的问题 很多问题 但我不知道如何手动激活选项卡 tabs 在 jquery 1 10 中 我创立并尝试了这个解决方案 mytabs tabs option act
  • 保存 Kivy 应用程序的登录屏幕用户名和密码

    我正在开发适用于 iOS 和 Android 的 Kivy 应用程序 并且需要帮助来保持用户持续登录 即使在应用程序关闭或终止后也是如此 我正在使用 Parse 来存储用户凭据 我已经向 App 类添加了一个 on pause 方法 但这仅
  • Couchbase 连接 - 外部 IP 而不是内部 IP

    在同一个数据中心 我有一个应用程序服务器 客户端 连接到包含 3 个节点的 couchbase 集群 我希望客户端通过内部 IP 而不是外部 IP 进行连接 以优化性能 假设这些是我的 IP 节点1内部IP 节点1外部IP 节点2内部IP
  • CLGeocoder 从给定位置反向地理编码

    给定经度和纬度不是我当前的位置如何使用执行反向地理编码查找GLGeocoder self geoCoder CLGeocoder alloc init self locationManager CLLocationManager alloc
  • JSF 2:直接调用托管 bean

    我是 JSF 新手 2 在 Struts 中 我们可以从 URL 调用一个操作 例如app action 这会调用一个操作并返回一个结果页面 例如 JSP 最初没有 JSP HTML 如何在 JSF 中完成同样的事情 我知道如何从 xhtm
  • FOSRestBundle 和 JMSSerializer 自定义表单错误处理程序

    我已经为 JMSSerializerBundle 编写了一个自定义表单处理程序 我将其与 FOSRestBundle 一起使用 根据文档它应该像正确标记服务一样简单 但我的自定义处理程序永远不会被使用 这是处理程序
  • 当子报告溢出到新页面时,我想要“继续...”文本

    我认为 这应该是一个功能 当子报表详细信息带溢出到下一页时 应该出现 继续 或其他内容 但我无法解决该问题 我试图找出答案 如果有任何解决方案 但没有任何作用 任何人都可以有更好的想法 如何获得解决方案 正常 的做法是 In 子报告将文本放
  • 转发到su目录时如何从url中删除子目录?

    在共享服务器上 我被迫从 cpanel 管理域的文档根 这是有问题的并且消耗大量时间 所以我将所有域重定向到一个目录root 一个例子 sd1 domain com gt public html web sd2 domain com gt
  • 钩子相当于 componentWilLReceiveProps 来更新状态

    所以我有一个组件 可以有条件地更新道具更改的状态 如果当前状态的 CurrentPage 不等于下一个 props CurrentPage 我用下一个 props 的 CurrentPage 更新状态 public componentWil
  • 如何在 HTML 页面中使用 Google 字体

    我见过人们在他们的网站中使用谷歌字体 如何在我的网站中使用 Google 字体 我使用的是普通字体 例如 Arial 和 Verdana 但我也想使用 Source Sans Pro 和 Ubuntu 字体 我该怎么办 访问 Google
  • WCF 服务名称和绑定名称

    Scenario 我有两个 WCF 服务组合在一个 App Config 文件中 我无法运行该程序 应用程序可以编译 但在服务初始化时失败 Question 我想知道是否需要将服务名称设置为与也定义为整体服务一部分的其他名称相同 ERROR
  • C#/.NET 的 MQ 统计监控

    我们与之交易 MQ 数据的供应商之一有一个监视器 显示以下内容 我自己编写了一个 C 监视器 每 x 分钟拍摄一次队列深度的快照 但我想知道如何获取排队和出队的消息数 在我看来 这两个统计数据具有不同的性质 对我来说 队列深度是在给定的时间
  • 在 QTableWidget 中选择行和列,同时保持突出显示

    我设置了一个 QTableWidget 您无法选择单元格 但可以通过标题选择行 列 我遇到的问题是 当我选择一行时 它会取消选择已选择的任何列 列 行也是如此 我希望能够选择具有 ExtendedSelection 行为的行和具有 Sing
  • Tensorflow:参数无效:断言失败:[“预测”包含负值]

    我正在尝试使用tensorflow keras 创建一个FCN 调用 model fit 时出现以下错误 0 Invalid argument assertion failed predictions contains negative v
  • Android:notifyDataSetChanged();不工作

    我在服务器中有一个数据库 我从平板电脑上从数据库中的一个表中获取一些值 我将此信息正确加载到列表中 但我想知道为什么当发生更改时 即使我使用也没有任何反应notifyDataSetChanged 我必须说 为了加载加载数据 您使用 Asyn