很多时候我们在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指向的地址发送更改的时候该方法是无效的。
网友评论