2015-02-25 1 views
4

Когда я пытаюсь удалить элемент в списке, он не обновляет список. Я последовал и прочитал некоторые подобные вопросы здесь, в stackoverflow, но у меня не было никаких результатов. Не могли бы вы мне помочь?Android: не удается обновить мой список

У меня есть активность Вер, где у меня есть метод onResume():

public class Ver_DespesasActivity extends ActionBarActivity { 

private ListView listView ; 
private ArrayAdapter dataAdapter; 
private DatabaseHelper databaseHelper ; 
private List<Despesa> despesas; 
ArrayList<Despesa>items; 
MyAdapter adapter; 

(...) 
    @Override 
    public void onResume() { 
      super.onResume(); 
      databaseHelper= new DatabaseHelper(this.getApplicationContext()); 
      Gasto gasto = databaseHelper.getGasto(); 
      String mes = gasto.getMes(); 
      int ano = gasto.getAno(); 

      items.clear(); 
      items.addAll(databaseHelper.getAllDespesas(mes, ano)); 
      adapter.refresh(items); 
    } 

Тогда у меня есть класс MyAdapter, где у меня есть метод обновления():

public class MyAdapter extends BaseAdapter implements ListAdapter { 

    private ArrayList<Despesa> list = new ArrayList<Despesa>(); 
    private Context context; 
(...) 
public void refresh(ArrayList<Despesa> list) 
    { 
     this.list = list; 
     this.notifyDataSetChanged(); 
    } 

MyAdapterConstructor:

public MyAdapter(ArrayList list, Context context) { 
     this.list = list; 
     this.context = context; 
    } 

Обновление: Я не знаю, если это важно, я не использую list.remove, чтобы удалить элементы моего списка, у меня есть метод, чтобы это сделать.

+0

Вы можете просто тест цели изменить эту строку, 'личного список ArrayList = новый ArrayList ();' 'с личным списком ArrayList ;' и тестировать свой код? Поскольку я сомневаюсь, что ваш «список» только что создан, он не ссылается на «элемент». – user370305

+0

@ user370305 такой же результат: \ – porthfind

+1

Если вы не создаете новый экземпляр 'private ArrayList list', используя' new' и ссылаясь на 'items' (поскольку элементы ArrayList очищены и снова добавлены новые записи). Тогда он должен работать. – user370305

ответ

3

Поскольку адаптер уже использует ваш список items, вам не нужен ваш метод обновления. Вы можете просто изменить элементы, как вы делаете, и непосредственно notifyDataSetChanged.

items.clear(); 
items.addAll(databaseHelper.getAllDespesas(mes, ano)); 
adapter.notifyDataSetChanged(); 
+0

, если я это сделаю, мой список не появляется. Я делаю clear() в Activity, который, как я думаю, также возможен. – porthfind

+0

- это 'items' список, который вы передаете в свой конструктор' MyAdapter'? – tachyonflux

+0

Благодарим за обновление, поэтому я обновил свой ответ, предположив, что ваш конструктор 'MyAdapter' передан в список' items'. – tachyonflux

Смежные вопросы