0

我想用加载器加载一个 MergeAdapter。我在 onLoadFinihed 回调中将适配器添加到 MergeAdapter,但 ListView 显示为空。我注意到没有调用自定义适配器的 getview 方法。

我使用相同的自定义适配器运行相同的代码并且运行良好,但我需要将标题添加到 ListView。

MergeAdapter 与加载器一起使用?

一些代码:

我设置了适配器:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    setEmptyText(getString(R.string.raceList_empty));

    mAdapter = new MergeAdapter();
    setListAdapter(mAdapter);
    getLoaderManager().initLoader(0, null, this).forceLoad();
}

然后在 onLoadFinihed 上:

@Override
public void onLoadFinished(Loader<List<Race>> loader, List<Race> data) {

    LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View headerView = inflater.inflate(R.layout.race_header_row, null);
    mAdapter.addView(headerView, true);

    RaceAdapter activeAdapter = new RaceAdapter(getActivity());

    activeAdapter.setData(data);

    mAdapter.addAdapter(activeAdapter);
}
4

1 回答 1

2

MergeAdapter 与加载器一起使用?

不是你这样做的方式。引用文档“时间”部分的当前版本

在调用 setListAdapter() 以将 MergeAdapter 与 ListView 关联之前,您必须将内容倒入 MergeAdapter。此限制是必需的,因为 Android 只调用一次 getViewTypeCount(),并且添加更多视图或适配器会添加更多视图类型。

于 2013-02-19T12:01:56.320 回答