项目开发中遇到一个问题,就是Fragment里面嵌套ScrollView。如果打算执行notifyDataSetChanged()进行数据刷新,但是不会显示出任何数据。百度了一小时也没找到一个合理的结果。遂翻墙,找到这样一篇文章。http://stackoverflow.com/questions/14503006/android-listview-not-refreshing-after-notifydatasetchanged(需要翻墙)。
我将主要代码沾这里###
- You are assigning reloaded items to global variable items in onResume(), but this will not reflect in ItemAdapter
class, because it has its own instance variable called 'items'.
For refreshing ListView, add a refresh() in ItemAdapter class which accepts list data i.e items- 大概意思就是:你执行notifyDataSetChanged()将在 onresume()重新加载项目,但这将不会影响到 itemadapter 类,因为它有自己的实例变量被称为“List<Items>”.
所以打算刷新ListView的话,需要重写Adapter并添加一个refresh()方法(ps:你可以叫任意的方法名称)。让这个refresh()方法直接管理List<Items>.然后在Adapter里面调用notifyDataSetChanged()。
class ItemAdapter{
public void refresh(List<Item> items) {
this.items = items;
notifyDataSetChanged();
}
}
然后在Fragment里面直接调用mAdapter.refresh(list);即可。
第一次写如有不足之处望指出,大家一起进步。