2012-04-19 5 views
2

Я работаю над приложением, чтобы развить свои знания. Я создал приложение календаря, которое пользователь может назначить при нажатии на дату. Затем у меня есть кнопка удаления, которая открывает все встречи, созданные в новом действии, там у меня есть: вид списка, который отображает все встречи текстовое представление, которое отображает выбранную встречу (выбранную пользователем для удаления) и кнопку удаления. кнопка удаления удаляет все элементы из sqlite, но я могу видеть, как это работает только при перезапуске приложения. Я знаю, что в моем коде отсутствует что-то еще. Как я могу очистить список, в то же время любая помощь будет очень оцененаAndroid - sqlite удалить все

мой код:

удалить весь метод

public void deleteAll() { 

     db.delete(TABLE_NAME, null, null); 
    } 

код кнопки:

public void onClick(View v) { 
    switch(v.getId()){ 

    case R.id.removeBtn: 

     dm.deleteAll(); 

     break; 
    } 

поблагодарить вас }

+1

Вы должны запросить курсор и обновить свой список с помощью нового – zapl

+0

А так, чтобы «увидеть эту работу» означает, что вы не видите, что элементы удалены? Или вы проверили базу данных и 'deleteAll();' не работает? – yoshi

+0

Я пробовал это {c.requery();} но он продолжает говорить, что Cursor устарел – Tacit

ответ

3

Возможно, не самый элегантный, но я не создаю свой интерфейс в onCreate(). Вместо этого в onCreate() я вызываю другой метод initializeUI(), и именно там я создаю свой пользовательский интерфейс. Затем, в любое время, когда я делаю что-то, что должно быть отражено в интерфейсе (обновлять базу данных или что-то еще), мне просто нужно снова вызвать мой метод initializeUI().

Edit: Также смотрите в notifyDataSetChanged() для адаптера, как exampled here

1

Сначала проверьте, если ваша база данных доступна для записи (getWritableDatabase)

Затем убедитесь, что ваш «TABLE_NAME», на самом деле имя таблицы.

Затем вы можете попробовать использовать execSQL («удалить из» + TABLE_NAME);

Если это не сработает, вы можете попытаться закрыть db.

окончательно попробуйте положить его в сделку beginTransaction(); .. удалять .. endTransaction();

1

Если вы на самом деле изменения данных от адаптера, используемого в ListView, вы можете использовать перезапрос() метод на курсоре, используемый для заполнения Адаптер. Это должно отражать ваши изменения!

+0

Я попробовал этот c.requery() ; но он продолжает говорить, что Cursor устарел, что я использую вместо этого – Tacit

+0

@Tacit Опубликовать весь ваш код, чтобы узнать, можем ли мы помочь вам больше! – Caumons

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