我想用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);
}
答案 0 :(得分:2)
MergeAdapter适用于Loaders?
不是你这样做的方式。引用the current edition of the documentation's "Timing" section:
在调用setListAdapter()以将MergeAdapter与ListView相关联之前,必须将内容倒入MergeAdapter。此限制是必需的,因为Android只调用一次getViewTypeCount(),添加更多视图或适配器会添加更多视图类型。