今天写项目的时候,发现Adapter的notifyDataSetChanged()方法不起作用了!
后来查阅了一下资料,自己总结了我的理解误区进行了纠正。
我把我犯的错误写成一个错误demo吧,方便大家理解
String[] list;
ArrayAdapter<String> aa;
ListView listView;
list = new String[]{"listView item"};
aa= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
listView.setAdapter(aa);
list = new String[]{"new listView item"};
aa.notifyDataSetChanged();
我一直以为,只要new Adapter 传进去的容器改变了,那么 notifyDataSetChanged之后,执行相应的更新UI操作。但是!这样notifyAdapter之后是不起作用的!
这是为什么呢?我们来看一下ArrayAdapter的源码就可以知道了。
ArrayAdapter:
public ArrayAdapter(Context context, int textViewResourceId, T[] objects) {
init(context, textViewResourceId, 0, Arrays.asList