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()を1回だけ呼び出すため、この制限が必要です。ビューまたはアダプターを追加すると、ビュータイプが追加されます。

于 2013-02-19T12:01:56.320 に答える