2

私はこれまでのところ、知識を深めるためのアプリに取り組んでいます。ユーザーが日付をクリックすると予約できるカレンダーアプリを作成しました。次に、新しいアクティビティで作成されたすべての予定を開く削除ボタンがあります。すべての予定を表示するリストビューと、選択した予定(削除するユーザーが選択したもの)を表示するテキストビューと、削除ボタンがあります。削除ボタンは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;
    }

ありがとうございました }

4

3 に答える 3

3

おそらく最もエレガントではありませんが、onCreate()でUIを構築していません。代わりに、onCreate()で、別のメソッドinitializeUI()を呼び出し、そこでユーザーインターフェイスを構築します。次に、インターフェイスに反映する必要があること(データベースの更新など)を実行するときはいつでも、メソッドinitializeUI()を再度呼び出す必要があります。

編集:ここに示す例のように、アダプターのnotifyDataSetChanged()も調べてください。

于 2012-04-19T22:21:40.497 に答える
1

まず、データベースが書き込み可能かどうかを確認します(getWritableDatabase)

次に、「TABLE_NAME」が実際にテーブル名であることを確認します。

次に、execSQL( "delete from" + TABLE_NAME);を使用してみてください。

それが機能しない場合は、データベースを閉じてみてください。

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

于 2012-04-19T22:12:41.543 に答える
1

ListViewで使用されるアダプターから実際にデータを変更する場合は、アダプターの設定に使用されるカーソルでrequery()メソッドを使用できます。これはあなたの変更を反映するはずです!

于 2012-04-19T22:48:52.713 に答える