У меня иногда возникает эта ошибка
Содержимое адаптера изменилось, но ListView не получил уведомление.Убедитесь, что содержимое вашего адаптера не изменено из фонового потока
Но я не понимаю, потому что я работаю в потоке пользовательского интерфейса.Если у вас есть идея, спасибо.
class LoadingProducts extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
loading_indicator.show();
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (isAdded()) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.setData(listProducts);
mAdapter.notifyDataSetChanged();
loading_indicator.hide();
}
});
}
}
@Override
protected Void doInBackground(Void... params) {
get_data();
return null;
}
}
ОБНОВЛЕНО: Эта проблема появляется в обновлении списка при поиске
предыдущий код на QueryTextChange:
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (mQueryStringSearch.length() > 2)
new LoadingProducts().execute();
}
}, 300);