调用notifyDataSetChanged之后listview不刷新
来源:互联网 发布:写日记什么软件最好 编辑:程序博客网 时间:2024/06/07 19:17
为什么调用notifyDataSetChanged之后listview不刷新
相信大家android开发中也经常用到ListView这个控件,ListView中我们都要设置adapter,来与我们的listview进行一个匹配。我们经常new 一个adapter时候直接把我们的数据list传入。如:
mXXXListAdapter = new XXXListAdapter(mContext,mList);
setAdapter(mXXXListAdapter);
这是我们第一次初始化ListView各个item的常见调用,但是如果我们之后要变化ListView的展示呢,比如常见微信朋友圈再加载、、、、这种就是我们需要我们刷新ListView的展示。那我们怎么刷新ListView的展示呢?那就是调用adapter的notifyDataSetChanged方法,调用notifyDataSetChanged后ListView就会根据我们最新的mList数据来绘制我们新的ListView。
关键问题来了,为什么我们只调用notifyDataSetChanged就可以实现ListView的刷新,我们并没有像刚开始那样把我们修改后的mList再进行传递给adapter?
哈哈,其实要是知道了这个原理也就可以理解我们今天要讨论的问题关键,其实这还是涉及我们java中的参数传递问题。下面我们分步骤说明:
1、 初始化了 mList = new List<T>();
2、 mXXXListAdapter = new XXXListAdapter(mContext,mList);//把mList传递给了adapter,这时adapter里面也有相应list对象,实际上adapter的list只是一个引用也指向mList指向的内存空间
3、当mList数据修改完毕后(指的开始mList指向的内存空间数据修改而不是mList指向其他内存空间),然后调用notifyDataSetChanged通知adapter去刷新,这时adapter的list也是指向开始mList指向的那一块内存空间去刷新ListView
所以说调用notifyDataSetChanged出现ListView不刷新问题根源在于mList指向了其他内存空间,而不是修改了原指向内存空间内容。
下面通过代码给大家说明一下:
mList = new List<T>();
mList.add(T);
mXXXListAdapter = new XXXListAdapter(mContext,mList);
setAdapter(mXXXListAdapter);
修改数据mList数据:
mList = otherList;//错误,让mList指向了其他内存空间,调用notifyDataSetChanged出现ListView不刷新
mList.add(therList.get(0));//正确修改方法mList只是修改了内存空间的内容,调用notifyDataSetChanged出现ListView会刷新
其实也可以认为是生拷贝与浅拷贝的区别
好啦!到这里我想应该给大家讲清楚了调用notifyDataSetChanged出现ListView不刷新。
本文属于自己理解,如有问题回复指出,谢谢!!!
- 调用notifyDataSetChanged之后listview不刷新
- listview调用notifyDataSetChanged之后不刷新
- listview调用notifyDataSetChanged()后不刷新界面
- Adapter调用notifyDataSetChanged后listview不刷新
- listview notifyDataSetChanged不刷新
- notifyDataSetChanged ListView 不刷新
- 关于 ListView 调用 notifyDataSetChanged 不刷新的问题
- ListView和GridView调用notifyDataSetChanged界面不刷新
- ListView notifyDataSetChanged()不刷新数据
- Android listView使用Adapter.notifyDataSetChanged()不刷新
- android深度理解ListView notifyDataSetChanged()不刷新
- listview notifydatasetchanged 不刷新的一种解释
- BaseAdapter调用notifyDataSetChanged不刷新页面
- listview在adapter,notifyDataSetChanged之后怎样才能不回到最上面
- notifyDataSetChanged 动态刷新listview
- listview notifyDataSetChanged()刷新显示
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- OC属性
- 面向对象的特征有哪些方面
- Android Studio导入Project、Module的正确方法
- android 进阶--使用adb命令行
- browserify-exorcist(生成sourcemap)
- 调用notifyDataSetChanged之后listview不刷新
- 线性表的 顺序存储 与 链式存储 的区别与特点
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标、异常等
- C/C++内存泄漏检测
- 谁有16.0图纸刷号程序
- Swift网络请求库 Alamofire 检测网络状态
- Android NDK编程浅入深出之--Android.mk
- 方法:十进制小数转换二进制
- 解决python中文编码混乱的问题