0

Мне нужна ваша помощь. Я хочу удалить данные из моей базы данных SwipeToDelete внутри RecyclerView.Удалить данные из базы данных внутри RecycleView

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

Я пытался вызвать базу данных внутри NoteAdapater (Ресайклер адаптер) и удалить элемент, который я хочу с помощью метода RemoveItem (целое положение), как это:

public void removeItem(int position){ 
    db.deleteNote(position); 
    noteList.remove(position); 
    notifyItemRemoved(position); 
} 

Вот код MainActivity:

public class MainActivity extends AppCompatActivity { 
RecyclerView recyclerView; 
NoteAdapter adapter; 
List<Note> myList; 
FloatingActionButton fab; 
DBHelper db = new DBHelper(this); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    initializeViews(); 

    myList = db.getAllNotes(); 
    adapter = new NoteAdapter(this,myList); 

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(layoutManager); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setAdapter(adapter); 

    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNewNote(); 
     } 
    }); 

    ItemTouchHelper.Callback callback = new Swipe(adapter); 
    ItemTouchHelper helper = new ItemTouchHelper(callback); 
    helper.attachToRecyclerView(recyclerView); 

} 

код из базы данных, которая удаляет данные:

public void deleteNote(int note){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(TABLE_NAME, KEY_ID + " = ?",new String[] {String.valueOf(note)}); 
} 
+0

Вы получаете какую-либо ошибку при удалении или что? –

+0

@AlexanderPerfilyev Я получаю исключение NullPointeException. Я думаю, что Im не инициализирует мой DatabaseHelper правильно ... –

+0

yep, просто передайте 'db' в качестве параметра конструктора для вашего адаптера, и он должен работать. –

ответ

0

Вы r issue здесь db.deleteNote(position); В вашем запросе указано, что вы удаляете элемент с идентификатором, равным переданному параметру deleteNote(int note).

Так что вам нужно передать идентификатор примечания, а не позицию. Что-то вроде:

db.deleteNote(noteList.get(position).getId()); 
+0

Да, именно так. Наконец, мой код работает. Спасибо, Александр. Ценю вашу помощь. –

Смежные вопросы