我使用LoaderManager
来填充我的ListView
的适配器与数据。我实现了LoaderManager.Callbacks
,但我无法刷新ListView
以显示新数据。 调用adapter.notifyDatasetChanged()
,invalidate()
或postInvalidate()
什么都不做。从自定义ListView类中刷新ListView
一些代码:
@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);
[...]
}
我的自定义Adapter
的setData
方法:
public void setData(ArrayList<Items> data) {
clear();
if (data != null) {
for (Items aData : data) {
add(aData);
}
}
}
愿你可以重新初始化适配器,尝试重新初始化.... – Pragnani
你在此改变你的转接器内的getCount将()方法? 它应该像返回entries.size(); – Vetalll
@Pragnani谢谢,我已经尝试创建一个新的'Adapter'并将其设置为'ListView'。没有用。 – Leandros