您的位置:首页 > 移动开发 > Android开发

关于Android中Adapter调用notifyDataSetChanged方法无效解析

2014-03-20 23:14 351 查看
在为ListView设置Adapter后,调用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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: