关于Android中Adapter调用notifyDataSetChanged方法无效解析
2014-03-20 23:14
351 查看
在为ListView设置Adapter后,调用notifyDataSetChanged()方法改变数据,
但是显示界面却无效果,总结以下几种原因:
1、未调用notifyDataSetChanged()方法,该错误很容易排除
2、数据集合中的数据没有改变,所以调用notifyDataSetChanged()方法后无效果,该错误也很容易排除
3、数据集合的指向改变了,所以调用notifyDataSetChanged()方法后无任何效果,该错误经常出现,并十分不容易排除。什么是数据集合的指向改变,看下面代码,各位看官就能明白了:
但是显示界面却无效果,总结以下几种原因:
1、未调用notifyDataSetChanged()方法,该错误很容易排除
2、数据集合中的数据没有改变,所以调用notifyDataSetChanged()方法后无效果,该错误也很容易排除
3、数据集合的指向改变了,所以调用notifyDataSetChanged()方法后无任何效果,该错误经常出现,并十分不容易排除。什么是数据集合的指向改变,看下面代码,各位看官就能明白了:
private ListView listView; private List<String> list; private ArrayAdapter<String> adapter; private void setAdapter() { // 实例化List集合对象 list = new ArrayList<String>(); list.add("Take Me To Your Heart"); list.add("My Heart Will Go On"); list.add("Yesterday Once More"); list.add("I Still Believe"); list.add("Just One Last Dance"); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); listView.setAdapter(adapter); // 改变List集合的指向 // 改变了List集合的指向后,调用Adapter的notifyDataSetChanged()将无效果 list = new ArrayList<String>(); list.add("Living To Love You"); adapter.notifyDataSetChanged(); // 解决方法 // 清空原来的List数据集合,不可以重新实例化,只能添加新的集合列表 // 错误多发生在查询数据库操作中 list.clear(); List<String> values = new ArrayList<String>(); values.add("Free Loop"); list.addAll(values); adapter.notifyDataSetChanged(); }
相关文章推荐
- android多屏幕适配
- Android从入门到精通之编程实现软件界面方法
- Android中不同activity之间数据的共享
- Mac 上连接真机调试android应用
- Android 入门 - 定制开机画面
- Android 自定义View 一般View定义
- Android应用程序的五大基本组件
- Android的消息循环机制 Looper Handler类分析
- Android入门到精通之Could not find *.apk!解决办法
- Android内核中判别启动模式
- Android Bitmap 与 Drawable之间的区别和转换
- Android Bitmap 与 Drawable之间的区别和转换
- android 中 任务、进程和线程的区别
- Android的异常处理 全局的异常捕获
- Android应用实例之---使用Linkify + 正则式区分微博文本链接及跳转处理
- android开发中ListView与CheckBox的混合使用
- Android应用程序结构总结
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- android优化listview
- Android开发之用帧布局和handler实现霓虹灯效果