2

を使用しLoaderManagerて、アダプターにListViewデータを入力します。実装しましたLoaderManager.Callbacksが、を更新しListViewて新しいデータを表示できません。呼び出しadapter.notifyDatasetChanged()invalidate()またはpostInvalidate()何もしません。

いくつかのコード:

@Override
public void onLoadFinished(Loader<ArrayList<Items>> arrayListLoader, ArrayList<Items> entries) {
    Log.i("TAG", "+++ onLoadFinished() called! +++");
    switch (arrayListLoader.getId()) {
        case LOADER_ID:
            mAdapter.setData(entries);
            mAdapter.notifyDataSetChanged();
            invalidate();
            break;
    }
}

は、クラスadapterのデフォルトコンストラクタで初期化されます。ListView

アダプタとListViewの初期化(関連する部分に分解):

public CustomListView(Activity activity) {
    [...]
    mAdapter = new CustomEntryAdapter(mActivity, R.layout.row_monthlistview);
    setAdapter(mAdapter);
    mCallbacks = this;
    LoaderManager loaderManager = mActivity.getSupportLoaderManager();
    loaderManager.initLoader(LOADER_ID, null, mCallbacks);
    [...]
}

setData私の習慣の方法Adapter

public void setData(ArrayList<Items> data) {
    clear();
    if (data != null) {
        for (Items aData : data) {
            add(aData);
        }
    }
}
4

3 に答える 3

0

これを試して :

yourGlobalList.clear();
yourGlobalList.addAll(entries)
mAdapter.notifyDataSetChanged();
于 2013-01-31T13:23:20.510 に答える
0

私の特定のケースでは不可能のようです。これが問題の根本です。nをnにLoaderManagerバインドできません。LoaderManagerviews

limn->∞</p>

于 2013-01-31T17:25:31.077 に答える
-3

notifyDataSetChanged()を呼び出した後、listView.setAdapter()メソッドを呼び出す必要があると思います

于 2013-01-31T13:18:47.277 に答える