2016-02-18 2 views
0

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

Я пытаюсь обновить список автоматически. Мне нужно намерение? Или есть другой способ?

Details.java

ImageButton deleteButton = (ImageButton) findViewById(R.id.delete_clothes); 
deleteButton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (handler.deleteCloth(String.valueOf(extras.getInt("id")))) { 
      Toast.makeText(getApplicationContext(), "Cloth has been deleted.", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

Dresses.java

private void loadClothesData() { 

    clothes = handler.readAllDresses(); 
    CustomAdapter adapter = new CustomAdapter(this, clothes); 
    lv.setAdapter(adapter); 
    lv.invalidateViews(); 
    adapter.notifyDataSetChanged(); 
    for (Clothes c : clothes) { 
     String record = "ID=" + c.getID() + " | Category=" + c.getCategory() + " | " + c.getSize(); 
     Log.d("Record", record); 
    } 
} 

Can anyone help? 
+0

Можем ли мы видеть код для deleteCloth()? – JCutting8

+0

public Boolean deleteCloth (String id) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete (SQLITE_TABLE, KEY_ROWID + "=" + id, null)> 0; } – user5805577

ответ

0

В пользовательском адаптера вызова this.notifyDataSetChanged();, где вы выполняете функцию удаления и удаления этого элемента из ArrayList, который установлен в это адаптор.

Я имею в виду удалить удаленное значение из списка массивов, который вы передаете в адаптер, а затем вызвать notifyDatasetChanged().

Надеюсь, это поможет.

+0

Мой метод удаления находится в базе данныхHandler, поэтому я не понимаю, что вы говорите – user5805577

+0

Я думаю, что ваш метод обработчика базы данных возвращает вам массивList одежды, поэтому передайте обновленный arraylist адаптеру и выполните notifyDataSetChanged в списке. – Cool7

+0

О, я вижу. Я благодарю вас, я попробую! – user5805577

0

Вы удаляете объект в пункте прослушивания элемента. Итак, в этом.

adapter.refreshlist(array after removing); 
adapter.notifyDataSetChanged(); 

Теперь в классе адаптера.

Public void refreshlist(Arraylist array){ 
    this.oldarray=array; 
} 

Это будет работать.

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

  • Нет связанных вопросов^_^