我使用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