,,Android 调用notifyDataSetChanged方法失败解决办法

,,Android 调用notifyDataSetChanged方法失败解决办法

本文主要介绍Android调用notifyDataSetChanged方法失败的解决方案的相关信息。有需要的朋友可以参考一下。

Android 调用notifyDataSetChanged方法失败解决办法

如ListView、GridView等。都是用于数据显示的,当绑定数据更新时,ListView需要实时刷新,也就是调用适配器的notifyDataSetChanged方法,但是很多人会发现ListView就是调用后没有刷新的数据。原因是什么?下面会详细解释。

1.数据源尚未更新,调用notifyDataSetChanged无效。

2.数据源被更新,但它指向一个新的引用。调用notifyDataSetChanged无效。

3.数据源已经更新,但是adpter没有收到消息通知,所以无法动态更新列表。

一个典型的错误是:

list=new String[]{ ' listView item ' };

adapter=new ArrayAdapterString(这个,android。R.layout.simple_list_item_1,list);

listView.setAdapter(适配器);

list=new String[]{ ' new listView item ' };

adapter . notifydatasetchanged();

我一直以为适配器会监控列表的变化。当列表被重新初始化时,ListView将自动刷新数据。实际上,适配器监视新字符串[]{'listView item'}的变化。适配器本身保存对原始数据源的内部引用inner_list(新字符串[]{'listView item'})。

当执行list=new string[]{ ' new listview 1 item ' }时;语句后,列表被重新初始化,相当于切断了列表与原数据源的关系(new String[]{'listView item'})。因此,稍后调用notifyDataSetChanged将不起作用,因为list和inner_list已经是堆上存在的完全不同的对象。

错误回顾:

前段时间以Arrayist等为原始数据源,一般进行add等操作。因此,list和inner_list始终保持对同一个变量的引用,没有问题。当然,换成直接分配,调用无效。因此,需要对原始数据对象进行操作,而不是重新赋值。

看看Arrayadapter的源代码:

ArrayAdapter:

public array adapter(Context Context,int textViewResourceId,T[] objects) {

init(context,textViewResourceId,0,arrays . aslist(objects));

}

数组:

公共静态测试列表asList(T.数组){

返回新的ArrayList t(array);//注意这里的ArrayList不是常见的ArrayList,而是数组的内部类。

}

以上是Android调用notifyDataSetChanged方法常见原因及解决方法的总结。如有疑问,欢迎留言讨论,或前往本站社区讨论。感谢您的阅读,希望对您有所帮助,也感谢您对本站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: