notifyDataSetChanged不生效原因

很多时候我们在listview中的数据变化的时候需要动态更新listView而使用notifyDataSetChanged();这个方法来刷新Listview,当该数据来源于数据库查询的时候,那么你就要注意了。

private ArrayList<HashMap<String, Object>> usersList;                  
usersList= query(......);     //根据查询函数获取一个ArrayList并赋值给绑定到Adapter的数据源usersList 
sAdapter.notif; 

如果你也是: 上面这种形式去刷新ListView的数据的话, 是不可以更新的. 必须改成如下形式:

//usersList= query(......);    
usersList.clear();  
usersList.addAll(query(......)); 
sAdapter.notifyDataSetChanged(); 

原因是: 在数据库查询之后返回了一个新的list,notifyDataSetChanged()这个方法会去检查原先接收到的地址上面检查数据变化,所以当list指向的地址发送更改的时候该方法是无效的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容