今天在写一个显示wifi信号强度的页面时候,发现在刷新数据的时候,无论如何都无法刷新。
在网上找了一些答案后才发现了问题所在。


    srlist = wifiAdmin.getAllNetWorkList();wifiadapter = new WifiSignalAdapter(srlist,app);wifiList.setAdapter(wifiadapter);

我在上面是通过一个wifiAdmin的工具类的getAllNetWorkLis()方法获取所有的wifi信息列表,
然后 我在线程中写的是
`

 while( !isStop){if(wifiAdmin.isOpenWifi()){//创建一个更新UI的线程来更新uirunOnUiThread(new Runnable() {@Overridepublic void run() {//打开wifi后  获取当前的wifi信号列表并且搭载数据srlist = wifiAdmin.getAllNetWorkList();wifiadapter.notifyDataSetChanged();}});}else{//目前未打开wifiwifiList.setAdapter(null);}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}

`
然后, 我发现无论线程怎么跑 就是无法刷新listview的数据。
百度了很久之后,发现一片博客上面写的是
对于一个listview,当我们把信息存放到一个List链表中时,然后又对这个链表进行流排序,最后去刷新适配器发现无改变,原因为咱们改变流链表中值得位置,但没有改变值在内存中所储存的地址,即引用没有改变,所以我们可以对adapter再new 一次,然后setAdapter 到相应的ListVeiw或者GridView即可解决问题。

看到这里 我才恍然大悟,明白了错的原因在于我每次都是使用 srlist = wifiAdmin.getAllNetWorkList(); 按照上面的说法就是 咱们改变流链表中值得位置,但没有改变值在内存中所储存的地址,即引用没有改变,也就是说,这个srlist被new过一次后 再次去new这个srlist的变量,适配器指向的还是以前的那个srlist地址而不是新new出来的srlist地址

那么,我们能不能不改变存储地址的情况下解决这个问题呢?
我接下来是这么改的

“`
while( !isStop){
if(wifiAdmin.isOpenWifi()){
//创建一个更新UI的线程来更新ui
runOnUiThread(new Runnable() {
@Override
public void run() {
//打开wifi后 获取当前的wifi信号列表并且搭载数据
List newlist = wifiAdmin.getAllNetWorkList();
srlist.clear();
srlist.addAll(newlist);

                            wifiadapter.notifyDataSetChanged();}});}else{//目前未打开wifiwifiList.setAdapter(null);}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}

现在,再运行一遍,发现有用了。
这种方法其实就是一种“曲线救国”的解法…..还有一种思路是
适配器里面写个刷新数据方法,然后在里面替换新数据后调notifydatachange
或者其他的,解决问题的方法很多,但是总的来说就像我同学说的那样
“黑猫白猫能抓老鼠就是好猫”

顺带感谢论坛里面的其他前辈大佬

参考博客 https://blog.csdn.net/yangyong915/article/details/41593069

Android使用notifyDataSetChanged刷新适配器数据无效相关推荐

  1. Android 设置定时刷新页面数据,最小自动刷新时间

    设置初始时间 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String t ...

  2. android回退页面刷新页面数据

    1.onResume()方法 activity或fragment页面中(简称原页面)启动新的页面(简称新页面),新页面返回时需要原页面刷新数据,观察他们的生命周期可以看出,启动新的页面,原页面会依次调 ...

  3. Android 下拉刷新用法

    导入PullToRefresh 1.1 修改library的build.gradle中的sdk版本 //修改前 compileSdkVersion 16 buildToolsVersion " ...

  4. 如何让listview或者gridview设置到底刷新新数据

    昨天简单的看了一下ScrollView的例子,虽然可以实现拉到底触发监听,但是Listview和gridview本身就自带了下拉属性,所以不需要ScrollView来实现. 那么在Listview和g ...

  5. android notifydatasetchanged 刷新错误,Android 调用notifyDataSetChanged方法失败解决办法

    Android 调用notifyDataSetChanged方法失败解决办法 如果使用ListView.GridView等进行数据展示,当绑定的数据有了更新的时候,需要实时刷新ListView,即调用 ...

  6. android notifydatasetchanged 刷新错误,android – notifyDataSetChanged()不刷新可扩展列表视图...

    我正在使用Expandable ListView,其中的数据通过Sqlite数据库填充.我已经选择从ExpandableListView中删除一个组,它实际上删除了数据库中的相应行.但是活动不会刷新, ...

  7. android 解决listview.notifyDataSetChanged刷新时Imageloader加载图片闪烁问题

    今天,简单讲讲android里再listview调用notifyDataSetChanged刷新界面时,Imageloader加载图片会闪烁的问题. 最近,发现app里的listview图片会出现闪烁 ...

  8. win8.1 android驱动安装失败,win8.1驱动安装失败提示“数据无效”如何解决

    最近一些用户在win8.1系统中安装驱动失败,并且提示"数据无效",也不知道哪里出现问题,尝试多遍还是一样,其实驱动安装失败的原因有很多,大家只需简单两步就能解决无法安装驱动问题, ...

  9. android addview 闪屏,android - 在notifyDatasetChanged()之后,RecyclerView闪烁

    android - 在notifyDatasetChanged()之后,RecyclerView闪烁 我有一个RecyclerView,它从API加载一些数据,包括一个图像URL和一些数据,我使用ne ...

最新文章

  1. [ZJOI2018]历史
  2. ISA2004发布应用程序服务器
  3. Error:java: 无效的目标发行版: 11解决方案
  4. 最大值_285期 博最大值2路,已经箭在弦上!
  5. java sessionid放入cookie_JAVA开发 SESSION和COOKIE的关系
  6. C#后台调用前台js(RegisterStartupScript)
  7. c++ 将引用赋值给引用_5分钟掌握 Python 对象的引用
  8. 微信公众帐号开发教程第7篇-文本消息中换行符的使用
  9. PHP与Spring的强势接口设计_微课介绍
  10. vue组件化的基本使用
  11. 一次搞定各种数据库 SQL 执行计划:MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite
  12. 方舟建筑代码指令大全
  13. [笔记]Windows核心编程《十七》内存映射文件
  14. JavaScript 计数器
  15. 计算机填充表格,表格自动填充 这几种你也会?
  16. C语言程序代码 25 编程实现将任意一个华氏法表示的温度,转换为以摄氏法表示的温度。
  17. 网络爬虫——中国大学排名数据抓取
  18. 2022年湖南省社会工作者考试综合实务(初级)练习题及答案
  19. STL教程:C++ STL快速入门
  20. CNN | 06Cifar-10分类

热门文章

  1. Maven阿里云镜像以及仓库地址修改
  2. Ubuntu桌面版高版本无法更新软件:Unmet Dependencies
  3. 解决The following packages have unmet dependencies问题!!!
  4. oracle实验报告2:: Oracle数据库物理存储结构管理(含实验小结)
  5. 中国不是不能开发出自己的浏览器,而是没必要
  6. Android蓝牙通信
  7. nowcoder20619 禁书目录
  8. 符合Scorm的LMS系统
  9. Android中,Sqlite数据库读取数据为空的问题
  10. Primitive Function 归一化方向角