2012-04-19 16 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()でUIを構築しません。代わりに、onCreate()では、別のメソッドinitializeUI()を呼び出し、それが私のユーザーインターフェイスを構築します。その後、いつでも私はインターフェイスに反映されるべき(データベースの更新など)何かを行うときは、私のメソッドinitializeUI()をもう一度呼び出す必要があります。

編集:here

1

最初のチェックデータベースが(getWritableDatabase)書き込み可能な場合

次に、あなたの「TABLE_NAME」は、テーブル名が実際にあることを確認してください。

次に、execSQL( "delete from" + TABLE_NAME)を使用することもできます。

これが機能しない場合は、dbを閉じることができます。

最後に、トランザクションに入れてください。 beginTransaction(); ..削除.. endTransaction();

1

をexampledとしても、あなたが実際にListViewコントロールで使用されるアダプタからのデータを変更している場合は、あなたが移入するために使用するカーソルに再クエリ()メソッドを使用することができ、あなたのアダプタ用)(notifyDataSetChangedに見えますアダプタ。これはあなたの変更を反映する必要があります!

+0

私はこのc.requery() ;しかし、Cursorが廃止されたと言っています。代わりに何を使用しますか – Tacit

+0

@Tacit私たちがあなたをもっと助けることができるかどうかを確認するために、すべてのコードを投稿してください! – Caumons

関連する問題