关于ListView中notifyDataSetChanged()刷新数据不更新原因

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

///////////////////////////////////////////////////////////////////////////////////////

         原因是:    sAdapter会通过usersList获取List中的内容。但是实际上可能(也应该)是,在调用super(MyActivity.this, R.layout.item, usersList)时sAdapter保存了usersList指向原List(假设为List a)的引用,在调用query函数之后,usersList指向了一个新的List(List b)。但是在调用notifyDataSetChanged()时,sAdapter会跟据保存的引用(即指向List a的引用)去更新,因此当然还是原来的结果,不会进行更新。


如果大家也出现这种情况可以使用后者去刷新ListView, 应该就没问题了