做android 开发遇到的问题及解决办法记录
2017-01-20 16:28
731 查看
问题一 通过Listview 加载本地数据库数据时报错:The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified
产生原因,我通过另外一个线程去获取数据库数据并把得到的数据加入到listView的adapter的数据源list里面,数据获取过后我就通过Handler.sendEmptyMessage通知主UI线程刷新ListView,Handler接到消息后在uI线程更新lisView,结果就报以上错误。居分析加网上百度得出参数原因是adapter里的数据更新与adapter调用notifyDataSetChanged()刷新listview之间存在延时意思是Adapter数据改变源和list刷新不及时。我的错误的具体原因是在非UI线程更新了Adapter的数据源。然后在通知UI线程去更新listview这个过程期间存在延迟。
解决办法:
用一个临时变量list在数据获取线程得到数据。然后Hundle接收到消息的HandlerMessage方法里在把临时变量值添加到adapter的数据源list里面,然后在调用adapter.notifyDataSetChenged()来刷新ListView展示最新内容
问题二 ListView 通过开启一个线程获取本地数据库数据后在用adapter调用notifyDataSetChanged()刷新ListVew不起作用没有刷新
参数原因:我直接把数据库获取的list数据通过"="赋值给了listview数据源。导致没法刷新。因为我通过这个方法赋值只是让数据源list指向数据库方法获取的list对象的地址。而数据源list本身原来的地址的数据是没有改变的。又因为adpter调用notifyDataSetChanged()实现机制是检查adaper数据源list地址的数据有没有改变如果改变就刷新如果没有改变就不刷新,所以我的做法是没改变的。才导致刷新无效
解决方法,用一个变量list来得到数据库获取的数据然后把该值通过数据源List的addAll把值添加到数据源里面。这样数据源地址的值也就改变了。adpter在调用notifyDataSetChanged()就有效了。
产生原因,我通过另外一个线程去获取数据库数据并把得到的数据加入到listView的adapter的数据源list里面,数据获取过后我就通过Handler.sendEmptyMessage通知主UI线程刷新ListView,Handler接到消息后在uI线程更新lisView,结果就报以上错误。居分析加网上百度得出参数原因是adapter里的数据更新与adapter调用notifyDataSetChanged()刷新listview之间存在延时意思是Adapter数据改变源和list刷新不及时。我的错误的具体原因是在非UI线程更新了Adapter的数据源。然后在通知UI线程去更新listview这个过程期间存在延迟。
解决办法:
用一个临时变量list在数据获取线程得到数据。然后Hundle接收到消息的HandlerMessage方法里在把临时变量值添加到adapter的数据源list里面,然后在调用adapter.notifyDataSetChenged()来刷新ListView展示最新内容
问题二 ListView 通过开启一个线程获取本地数据库数据后在用adapter调用notifyDataSetChanged()刷新ListVew不起作用没有刷新
参数原因:我直接把数据库获取的list数据通过"="赋值给了listview数据源。导致没法刷新。因为我通过这个方法赋值只是让数据源list指向数据库方法获取的list对象的地址。而数据源list本身原来的地址的数据是没有改变的。又因为adpter调用notifyDataSetChanged()实现机制是检查adaper数据源list地址的数据有没有改变如果改变就刷新如果没有改变就不刷新,所以我的做法是没改变的。才导致刷新无效
解决方法,用一个变量list来得到数据库获取的数据然后把该值通过数据源List的addAll把值添加到数据源里面。这样数据源地址的值也就改变了。adpter在调用notifyDataSetChanged()就有效了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件