【发布时间】:2015-04-23 04:54:37
【问题描述】:
我有一个使用带有自定义对象适配器的 listview 的 android 应用程序。
如果对象列表可用,则活动的 onCreate 我用以前的对象填充适配器并进行异步调用以获取新对象并填充适配器。
当再次填充适配器时,旧的元素列表将被删除并添加新的元素。我没有使用 notifyDataSetChanged()。
private CustomAdapter listAdapter;
private GridView gridView;
// this is onCreateView of fragment if i find old list in singleton i populate list and it shows on screen
function onCreateView()
{
...
...
listAdapter = new CustomAdapter(getActivity(),
CounterSingleton.getInstance(getActivity())
.getObjects());
gridView.setAdapter(listAdapter);
....
...
new AsnycTask().execute();
}
class AsnycTask
{
// fetch new list and replace old list shown
List<Objects> newList = fetchNewList();
listAdapter = new CustomAdapter(
getActivity(), newList);
gridView.setAdapter(listAdapter);
}
这里有几个问题:
通过创建适配器的新实例来填充适配器后,是否需要在 AsnycTask 类中使用 notifyDataSetChanged()。
是否会按照上述代码删除旧列表并用新列表替换。
【问题讨论】:
-
如果您正在创建新实例,则无需使用 notifyDataSetChanged() .....
-
旧列表将被新列表替换..
-
你真正想要什么?你想用新的东西删除旧的项目还是想保留两者?
-
@MurtazaKhursheedHussain 删除旧项目并用我展示的异步类中的新项目替换...
标签: android listview android-listview