Android 不了解在更新listview中的元素时是否使用notifyDataSetChanged()?
我有一个android应用程序,它使用带有自定义对象适配器的listview 一旦创建活动,如果对象列表可用,我将使用以前的对象填充适配器,并进行异步调用以获取新对象并填充适配器 再次填充适配器时,旧的元素列表将被删除,新的元素列表将被添加。我没有使用notifyDataSetChanged()Android 不了解在更新listview中的元素时是否使用notifyDataSetChanged()?,android,listview,android-listview,Android,Listview,Android Listview,我有一个android应用程序,它使用带有自定义对象适配器的listview 一旦创建活动,如果对象列表可用,我将使用以前的对象填充适配器,并进行异步调用以获取新对象并填充适配器 再次填充适配器时,旧的元素列表将被删除,新的元素列表将被添加。我没有使用notifyDataSetChanged() privateCustomAdapter列表适配器; 私有GridView GridView; //这是片段的onCreateView,若我在singleton中找到旧列表,我将填充列表,并显示在屏幕上
privateCustomAdapter列表适配器;
私有GridView GridView;
//这是片段的onCreateView,若我在singleton中找到旧列表,我将填充列表,并显示在屏幕上
函数onCreateView()
{
...
...
listAdapter=新的CustomAdapter(getActivity(),
CounterSingleton.getInstance(getActivity())
.getObjects());
setAdapter(listAdapter);
....
...
新建AsnycTask().execute();
}
AsnycTask类
{
//获取新列表并替换显示的旧列表
List newList=fetchNewList();
listAdapter=新的CustomAdapter(
getActivity(),newList);
setAdapter(listAdapter);
}
这里有几个问题:
notifyDataSetChanged()
,因为当前正在使用新数据源为ListView调用setAdapter
方法
根据上述代码,旧列表将被删除并替换为新列表
是,ListView将填充新数据
注意:不要再次调用setAdapter
方法-2来显示新数据。在适配器内创建一个方法,该方法将使用新数据更新当前适配器。例如:
public void addNewItems(List<Objects> itemList){
1. clear data from current adapter
for example if using ArrayList then
ArrayList_Object.clearAll();
2. Add itemList in ArrayList_Object
ArrayList_Object.addAll(itemList);
3. Call this.notifyDataSetChanged()
}
如果您正在创建新实例,则无需使用NOTIFYDATASETCHANGE()。旧列表将替换为新列表。您实际想要什么?您想用新项目删除旧项目,还是想保留两者?@MurtazaKhursheedHussain在我显示的异步类中删除旧项目并替换为新项目。。。
public void addNewItems(List<Objects> itemList){
1. clear data from current adapter
for example if using ArrayList then
ArrayList_Object.clearAll();
2. Add itemList in ArrayList_Object
ArrayList_Object.addAll(itemList);
3. Call this.notifyDataSetChanged()
}
listAdapter.addNewItems(newList)