The content of the adapter has changed but ListView did not receive a notification.

2024-04-15 19:48

本文主要是介绍The content of the adapter has changed but ListView did not receive a notification.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上次总结了notifyDataSetChanged()方法的注意事项,这里再补充一下该问题的解决方案:

如果在非UI线程中修改了ListView绑定的数据对象,同样会造成在非UI线程中更新主线程控件错误。

所以可以添加临时对象,在子线程中先把数据存入临时对象中,然后在通过handler处理。

在Thread中,tmpNewsData.add(hashMap);//跟mNewsData一样,先new出对象

然后通知handler处理:

Message m = new Message();

m.what = CHANGE_UI;

m.obj = tmpNewsData;

handler.sendMessage(m);


然后在主线程中进行数据的更新与界面的更新:

private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {

case CHANGE_UI:

mNewsData.addAll((List<HashMap<String, Object>>) msg.obj);//千万不能能“=”赋值给mNewsData 否则notifyDataSetChanged()无效

mNewsListAdapter.notifyDataSetChanged();

break;


这样就能解决这个问题了 

这篇关于The content of the adapter has changed but ListView did not receive a notification.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906758

相关文章

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

listview与复选框的合并使用

在使用listview的过程中,我们常常需要使用复选框,实现一些批处理功能。这时候我们需使用自定义的adapter,实现相关复选框的事件响应。      首先在adapter定义一个哈希表,用于存放复选框的选中情况:      如private static HashMap<String,Boolean> isSelected,private static HashMap<Inter

简单的android Listview使用例子

为了熟悉Listview的使用,做了一个小例子联系一下, 主要步骤: 1. 在MainActivity中,创建一个adapter对象(可以是android自带的ArrayAdapter,也可以是自定义的如SongAdapter) 2. 如果自定义,就要创建ListView的子项,如song_listview_item.xml 3. 创建ListView对象,并用setAdapter方法把a

兔子--Notification的使用

<span style="font-size:18px;color:#ff0000;"></span> <span style="font-size:18px;color:#ff0000;">使用步骤:</span><p><span style="font-size:18px;color:#ff0000;">1 获取通知管理器NotificationManager,它也是一个系统服务</sp

兔子--计算listview的高度,解决listview与scrollview控件冲突

/** * 计算ListView的高度 * * @param listView */ public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter OrderGoodsAdapter listAdapter = (OrderGoodsAdapter) listView.getAda

Flutter-listview的item左右滑动,删除item

import 'package:flutter/material.dart';//列表左右滑动删除void main() =>runApp(MaterialApp(home: HomePage(),));class HomePage extends StatelessWidget {final List<String> items = List.generate(20, (index) =>

Unity Adressables 使用说明(四)分发远程内容(Distribute Remote Content)

概述 远程分发内容可以减少应用程序的初始下载大小和安装时间。你还可以更新远程分发的资源,而无需重新发布应用程序或游戏。 当你将远程 URL 分配为 Group 的加载路径(Load Path)时,Addressables 系统会从该 URL 加载组中的资源。当你启用Build Remote Catalog选项时,Addressables 会在 Remote Catalog 中查找任何远程资源的

【扩散模型(十)】IP-Adapter 源码详解 4 - 训练细节、具体训了哪些层?

系列文章目录 【扩散模型(一)】中介绍了 Stable Diffusion 可以被理解为重建分支(reconstruction branch)和条件分支(condition branch)【扩散模型(二)】IP-Adapter 从条件分支的视角,快速理解相关的可控生成研究【扩散模型(三)】IP-Adapter 源码详解1-训练输入 介绍了训练代码中的 image prompt 的输入部分,即 i

net::ERR_UPLOAD_FILE_CHANGED

出现该错误的场景:由于上传一个文件后,对文件内容进行修改后,再对该文件进行上传。不会进后端接口,直接返回失败,浏览器会报上诉错误。 出现原因: 以下是ai的回答net::ERR_UPLOAD_FILE_CHANGED 错误表明在尝试上传文件时,文件的内容发生了变化,但浏览器检测到文件的元数据(如大小或修改日期)已更改。这通常发生在文件正在上传过程中被其他应用程序修改时。 解决方法: 给上传