Ошибка при удалении элемента из базы данных SQLite - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь удалить элементы в RecyclerView из моей базы данных SQLite, но получаю следующую ошибку:

java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
    at java.util.ArrayList.get(ArrayList.java:437)
    at com.reogen.bettarium.Fragments.ListFragment.onSwipe(ListFragment.java:135)
    at com.reogen.bettarium.Helpers.SwipeToDelete.onSwiped(SwipeToDelete.java:30)

Но я не понимаю, в чём дело .. Эти две строки:

            public Void onSwipe(RecyclerView.ViewHolder viewHolder, int direction, int position) {
    if (viewHolder instanceof ToDoAdapter.ToDoViewHolder) {
        String name = list.get(viewHolder.getAdapterPosition()).get_title();<-----

и

public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

    if (listener != null) {
        listener.onSwipe(viewHolder, direction, viewHolder.getAdapterPosition()); <-----

    }

}

Почему мое приложение аварийно завершает работу и не удаляет элемент из БД?Большое спасибо

РЕДАКТИРОВАТЬ: я пытаюсь удалить элементы из recyclerView и базы данных с OnSwipe в основном фрагменте:

 public Void onSwipe(RecyclerView.ViewHolder viewHolder, int direction, int position) {
    if (viewHolder instanceof ToDoAdapter.ToDoViewHolder) {
        String name = list.get(viewHolder.getAdapterPosition()).get_title();
         int deleteIndex = viewHolder.getAdapterPosition();

        toDoAdapter.removeItem(deleteIndex);

        mDatabase.execSQL("DELETE FROM " + TABLE_TODO + " WHERE " + COLUMN_TODONAME + "=\"" + name + "\";");


        //mDatabase.delete(ToDoDBHandler.ToDoItemDatabase.TABLE_TODO, ToDoDBHandler.ToDoItemDatabase.COLUMN_ID + "=" + position, null);
        toDoAdapter.swapCursor(newCursor());
    }

1 Ответ

0 голосов
/ 24 июня 2019

Попробуйте изменить String name = list.get(viewHolder.getAdapterPosition()).get_title(); на String name = list.get(position).get_title();

...