我没有看到notifyDataSetChanged()
的完全预期的功能。重命名/修改工作,但删除/删除不。
编辑:我正在测试4.1.1手机以及模拟器API 16(4.1)。
mylistfragment
是我的自定义ListFragment。
myadapter
是使用MyObject的标准ArrayAdapter。
mylist
是MyObject的ArrayList。
工作重命名操作:
// rename the db item
mylistfragment.mylist.get(i).name = "new name";
(mylistfragment.myadapter).notifyDataSetChanged(); // this works
listview正确更新以显示“新名称”。
无效删除操作:
// delete from db
mylistfragment.mylist.get(i).name = "DELETED";
mylistfragment.mylist.remove(i);
(mylistfragment.myadapter).notifyDataSetChanged(); // this does NOT work
我看到该项目的名称变为“DELETED”,这当然意味着我没有看到该项目消失。
我的ArrayList是在创建Fragment时从db构建的,所以如果我重新创建Fragment,项目就会消失。但是,当我告诉ArrayAdapter更新视图时,我希望该项目消失。
有没有人遇到过这个问题,或者想知道为什么从arraylist中删除有效但ListView没有反映出来?