MergeAdapter与AsyncTaskLoader

时间:2013-02-19 10:46:18

标签: android commonsware-cwac

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

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

MergeAdapter适用于Loaders?

一些代码:

我设置te适配器:

@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();
}

然后on 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);
}

1 个答案:

答案 0 :(得分:2)

  

MergeAdapter适用于Loaders?

不是你这样做的方式。引用the current edition of the documentation's "Timing" section

  

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