По нажатию на кнопку делается обработка файла. Необходимо при нажатии на нее еще раз, остановить обработку. Получаю ошибку:
The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make sure your adapter calls notifyDataSetChanged() when its content changes.
AsyncTask:
public class myTask extends AsyncTask<Void, Void, Void> {
private myTaskListener listener;
private ArrayList<myData> data;
public myTask (ArrayList<myData> data) {
this.data = data)
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if(this.listener != null) this.listener.onFinish();
}
@Override
protected void onCancelled() {
super.onCancelled();
if(this.listener != null) this.listener.onFinish();
}
@Override
protected Void doInBackground(Void... voids) {
while (!isCancelled()) {
//Обработка файла
this.data.add(new myData(//Добавляю данные));
}
return null;
}
public interface myTaskListener {
void onFinish();
}
public void setMyTaskListener(myTaskListener listener) {
this.listener = listener;
}
}
onClick():
private void start() {
if(!this.start) {
this.start = true;
this.img.setImageResource(R.drawable.ic_stop);
this.text.setText(R.string.stop);
this.myTask = new myTask(this.data);
this.myTask.setMyTaskListener(this);
this.myTask.execute();
} else {
this.img.setImageResource(R.drawable.ic_start);
this.text.setText(R.string.start);
this.myTask.cancel(true);
}
}
Слушатель:
@Override
public void onFinish() {
this.img.setImageResource(R.drawable.ic_start);
this.text.setText(R.string.start);
this.start = false;
this.adapter.notifyDataSetChanged();
}
Проблема бывает то с первого клика по кнопке, то при многократном клике. Как решить проблему?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости