0

私はあなたの助けが必要です。私はRecyclerView内のSwipeToDeleteによってデータベースからデータを削除したいと思います。RecycleView内のデータベースからデータを削除

私はすでにRecycleViewからアイテムを削除するスワイプクラスを持っています。そのアイテムはリストから削除できますが、データベースから削除することはできません。

私は「NoteAdapater(リサイクラーアダプタ)内のデータベースを呼び出し、このようなメソッドremoveItem(int型の位置)と私がしたい項目を削除しようとしたVEの:

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が発生します。私は私のDatabaseHelperを正しく初期化していないと思う... –

+0

うん、ちょうどあなたのアダプタのコンストラクタパラメータとして 'db'を渡すと、それは動作するはずです。 –

答えて

0

ますrの問題はここにありますdb.deleteNote(position);あなたのクエリは、渡されたパラメータdeleteNote(int note)と等しいidを持つアイテムを削除していると言います。

あなたがする必要があるのは、位置ではなく、メモIDを渡すことです。次のようなもの:

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

はい、それでした。最後に私のコードが動作します。ありがとうアレキサンダー。あなたの助けに感謝。 –

関連する問題