を使用し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);
}
}
}