Содержимое адаптера изменилось, но ListView не получил уведомление. Убедитесь, что содержимое вашего адаптера не изменено - PullRequest
0 голосов
/ 11 мая 2018

У меня иногда возникает эта ошибка

Содержимое адаптера изменилось, но 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);
...