0

私のコードには、リストビュー項目を削除する操作を行っているリストビューがあります。機能しますが、リストビューに表示されたままです。2番目のアクティビティにあります.最初のアクティビティに行った後に消えてから戻ってきます.私がしなければならない変更を教えてください.

Getclicker.java

public void onItemClick(AdapterView<?> a, View v, int position, final long id) {
                    AlertDialog.Builder adb=new AlertDialog.Builder(Getclicker.this);
                    adb.setTitle("Delete?");
                    adb.setMessage("Are you sure you want to delete the event" + (position+1));
                     final int positionToRemove = position;
                    adb.setNegativeButton("Cancel", null);

                        adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                eventsData1.delete( id);
                                adapter.notifyDataSetChanged();
                            }});
                        adb.show();
                    }

データベースの delete メソッド

public void delete(long id) {
        SQLiteDatabase db = this.getReadableDatabase();

        db.delete(DATABASE_TABLE, KEY_ROWID + " = ?",
                new String[] { String.valueOf(id )});
        db.close();
    }
4

3 に答える 3

1

ID、つまりLong Typeに基づいて削除しています

eventsData1.delete( id);

「位置」を使用する必要があります

eventsData1.delete(position);
adapter.notifyDataSetChanged();
于 2013-08-20T06:42:54.590 に答える
1

ご覧のとおり、現在、データベースからアイテムを削除していますが、アダプターから削除していないため、削除されたアイテムがまだ ListView に残っています。別のアクティビティに移動してから listView に戻ると、変更されたデータがアダプターにロードされます。

notifyDataSetChanged() に効果を持たせたい場合は、アダプターからもアイテムを削除する必要があります。. .

コードは次のようになります。

eventsData1.delete( id);
adapter.deleteItem(id);
adapter.notifyDataSetChanged();

Adapter クラスに delete() メソッドを追加します。. .

于 2013-08-20T06:40:35.033 に答える