Android ListFragment和asynctask问题 我试图在我的活动中间显示一个列表片段。列表片段适配器是一个自定义适配器(从BaseAdapter扩展而来),具有典型的ViewHolder模式。它的实现是正确的
我使用greenrobot Eventbus设置了适配器,以便从在后台执行查询的asynctask接收一个新的列表对象(这样不会减慢UI主线程的速度) 问题是列表片段最初没有数据库查询的结果,因此它默认为空(并在my xml中显示id为“empty”的主活动的textview) 最后,我的适配器和listviewfragment根本没有实例化,因为它默认为空 有没有更好的方法? 如何让listview片段等待从asyncTask接收到的数据Android ListFragment和asynctask问题 我试图在我的活动中间显示一个列表片段。列表片段适配器是一个自定义适配器(从BaseAdapter扩展而来),具有典型的ViewHolder模式。它的实现是正确的,android,android-fragments,android-asynctask,adapter,greenrobot-eventbus,Android,Android Fragments,Android Asynctask,Adapter,Greenrobot Eventbus,我使用greenrobot Eventbus设置了适配器,以便从在后台执行查询的asynctask接收一个新的列表对象(这样不会减慢UI主线程的速度) 问题是列表片段最初没有数据库查询的结果,因此它默认为空(并在my xml中显示id为“empty”的主活动的textview) 最后,我的适配器和listviewfragment根本没有实例化,因为它默认为空 有没有更好的方法? 如何让listview片段等待从asyncTask接收到的数据 我将只做一个包含listview的片段,而不是list
我将只做一个包含listview的片段,而不是listview片段,我将看看这是否有帮助。正如我正确理解的那样,到目前为止,您做的一切都很好。您需要做的是向适配器添加一个“update”方法,并在asynctask完成任务并获得结果时调用该方法。 此更新方法应该类似于
public void updateAdapterData(List<String> newList) {
mItems.clear(); // say mItems is the global list you have in the adpater
mItems.addAll(newList);
notifyDataSetChanged(); // This will cause the adpater to re-draw it's rows, so now data should be visible in your list
}
这有用吗?谢谢,迈克。我已经有了它,它从异步任务中获取onEvent方法并将列表加载到适配器中。问题是没有创建片段本身或适配器。由于数据最初是空的,当没有数据时,ListFragment的默认行为是显示id为空的视图资源。我真的不明白它是如何做到这一点的,因为它不是一开始就创建的(例如,我的日志不会在onattach或oncreateview中出现,所以我可以说)。我正在查看ListFragment源代码,试图找出它。如果您仍然被卡住,请提供一些代码,以便我可以帮助您!粘贴在代码中。抱歉,有很多。我试图删除任何与问题无关的内容。我也有点困惑,它说要使用Fragment标记和android:name属性将xml中的片段添加到活动中。但是,对于文档中的ListFragment,它说在xml中有一个listview,id为android list。它是哪一个?我有什么明显的遗漏吗?
adpater.updateAdapterData(newList);