0

我试图在我的活动中间显示一个列表片段。列表片段适配器是具有典型 ViewHolder 模式的自定义适配器(从 BaseAdapter 扩展)。它被正确实施。

我使用 greenrobot Eventbus 设置了适配器,以从在后台执行查询的 asynctask 接收新的 List 对象(以免减慢 UI 主线程的速度)。

问题是列表片段最初没有数据库查询的结果,因此它默认为空(并在我的 xml 中显示 id 为“空”的主要活动的文本视图)。

最后,我的适配器和 listviewfragment 根本没有被实例化,因为它默认为空。

有没有更好的方法来做到这一点?如何让我的列表视图片段等待从 asyncTask 收到的数据?

我将只做一个带有列表视图的片段,而不是列表视图片段,我会看看这是否有帮助。

4

1 回答 1

0

正如我正确理解的那样,到目前为止,您所做的一切都很好。您需要做的是向您的适配器添加一个“更新”方法,并在您的 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
}

在您的片段中,您执行以下操作:

 adpater.updateAdapterData(newList);

这有帮助吗?

于 2014-10-17T19:18:13.283 回答