我使用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
的{{1}}方法:
Adapter
答案 0 :(得分:0)
试试这个:
yourGlobalList.clear();
yourGlobalList.addAll(entries)
mAdapter.notifyDataSetChanged();
答案 1 :(得分:0)
在我的具体案例中似乎是不可能的。 LoaderManager
是问题的根源,我无法将n LoaderManager
绑定到n views
。
lim n - &gt; ∞
答案 2 :(得分:-3)
我认为你需要在调用notifyDataSetChanged()之后调用listView.setAdapter()方法