很多時候我們在listview中的數(shù)據(jù)變化的時候需要動態(tài)更新listView而使用notifyDataSetChanged();這個方法來刷新Listview,當(dāng)該數(shù)據(jù)來源于數(shù)據(jù)庫查詢的時候瑟枫,那么你就要注意了厉亏。
private ArrayList<HashMap<String, Object>> usersList;
usersList= query(......); //根據(jù)查詢函數(shù)獲取一個ArrayList并賦值給綁定到Adapter的數(shù)據(jù)源usersList
sAdapter.notif;
如果你也是: 上面這種形式去刷新ListView的數(shù)據(jù)的話, 是不可以更新的. 必須改成如下形式:
//usersList= query(......);
usersList.clear();
usersList.addAll(query(......));
sAdapter.notifyDataSetChanged();
原因是: 在數(shù)據(jù)庫查詢之后返回了一個新的list,notifyDataSetChanged()這個方法會去檢查原先接收到的地址上面檢查數(shù)據(jù)變化提茁,所以當(dāng)list指向的地址發(fā)送更改的時候該方法是無效的。