Обновить ListView из пользовательского класса ListView
Я использую 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);
}
}
}
3 ответа
Решение
Кажется невозможным в моем конкретном случае. LoaderManager
это корень проблемы, я не могу связать LoaderManager
к п views
,
lim n -> ∞
Попробуй это:
yourGlobalList.clear();
yourGlobalList.addAll(entries)
mAdapter.notifyDataSetChanged();
Я думаю, что вам нужно вызвать метод listView.setAdapter() после вызова notifyDataSetChanged()