Удалить элемент ListView из базы данных - PullRequest
0 голосов
/ 27 декабря 2018

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

Как мне изменить мой метод deleteToDo, чтобы он также удалял строку в моей базе данных?

Вот мой класс удаления:

public class ToDoList extends AppCompatActivity {

    ListView lv;
    TextView tv;
    Button addToDo, delToDo, delDoneToDo;
    ArrayList<String> myToDo;
    ArrayAdapter<String> adapter;
    DatabaseHelper myDBH;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_to_do_list);

        myDBH = new DatabaseHelper(this);

        lv = (ListView) findViewById(R.id.ToDoList);
        tv = (TextView) findViewById(R.id.greeting);
        delDoneToDo = (Button) findViewById(R.id.delDoneToDo);
        delToDo = (Button) findViewById(R.id.delToDo);

        deleteData();
        deleteAllToDo();

        myToDo = new ArrayList<String>();
        Cursor data = myDBH.getListContents();

        if(data.getCount() == 0){
            Toast.makeText(getApplicationContext(), "No ToDo's available", Toast.LENGTH_SHORT).show();
        } else {
            while (data.moveToNext()){
                myToDo.add(data.getString(1));
                adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_multichoice, myToDo);
                lv.setAdapter(adapter);
            }
        }
    }

public void deleteData(){
        delDoneToDo.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        SparseBooleanArray posCheck = lv.getCheckedItemPositions();
                        int count = lv.getCount();
                        for(int i=count-1; i>=0; i--){
                            if(posCheck.get(i)){
                                adapter.remove(myToDo.get(i));
                            } else {
                                Toast.makeText(getApplicationContext(), "No ToDo was selected", Toast.LENGTH_SHORT).show();
                            }
                        }
                        adapter.notifyDataSetChanged();
                        myDBH.deleteToDo(posCheck);
                        Toast.makeText(ToDoList.this, "To Do Deleted", Toast.LENGTH_SHORT).show();
                    }
                }
        );
    }
}

Вот мойБаза данных:

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "ToDo.db";
    public static final String TABLE_NAME = "todo_table";
    public static final String Col1 = "ID";
    public static final String Col2 = "ToDo_Title";
    public static final String Col3 = "Due_Date";
    public static final String Col4 = "Description";

    public DatabaseHelper (Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL("CREATE TABLE " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, ToDo_Title TEXT, Due_Date INTEGER, Description TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public boolean insertData (String ToDo_Title, String Due_Date, String Description) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(Col2, ToDo_Title);
        contentValues.put(Col3, Due_Date);
        contentValues.put(Col4, Description);

        long result = db.insert(TABLE_NAME, null, contentValues);
        if(result == -1){
            db.close();
            return false;
    }

        else {
            db.close();
            return true;
        }
    }

    public void deleteToDo(SparseBooleanArray posCheck) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + Col1 + " = " + posCheck.keyAt(0));
        db.close();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...