Обновить listview onpost выполнить asynctask

105
5

Я знаю, что этот вопрос был опубликован несколько раз, и я просмотрел почти все из них, но результата нет, я выполняю удаление элемента из базы данных mysql, но он не освежает, вот код кнопки onclicklistener и кнопки:

onClick прослушиватель:

 holder.void_button.setOnClickListener(new OnClickListener(){

public void onClick(View v) {
adapter = new CustomListViewVoidAdapter(context,R.layout.mytemp, items);
item_selected= items.get(position);
new DeleteOrder().execute();
}});
vi.setTag(holder);
}

OnPostExecute из AsyncTask:

 protected void onPostExecute(String unused){
adapter.remove(item_selected);
adapter.notifyDataSetChanged();
}

адаптер устанавливается в глобальном масштабе, можете ли вы проверить, где может быть проблема? он не возвращает никаких ошибок, просто удаляя элемент, а не обновляя.

С уважением

Ральф

спросил(а) 2020-04-04T00:18:17+03:00 5 месяцев, 4 недели назад
1
Решение
58

Выбрасывая его там, но, вы попробовали adapter.notifyDataSetInvalidated() ;? Это заставляет обновить.

Кроме того, поместите код в асинтезу!

Например:

protected void onPostExecute() {

adapter.notifyDataSetChanged();
adapter.notifyDataSetInvalidated();

}

ответил(а) 2020-04-04T00:34:13.203298+03:00 5 месяцев, 4 недели назад
41

Вы лучше настроите адаптер на вид списка в onPostExecute с новыми значениями. И в этом случае вам не нужно вызывать notifyDataSetChanged. Также не переустанавливайте адаптер в onClick, это не обязательно.

ответил(а) 2020-04-04T00:18:17+03:00 5 месяцев, 4 недели назад
41

Добавьте строку ниже в postExecute.


if(adapter != null) { 
adapter = new CustomListViewVoidAdapter(context,R.layout.mytemp, items);
YourListviewObject.setAdapter(adapter);
}

ответил(а) 2020-04-04T00:18:17+03:00 5 месяцев, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема