从RecycleView

时间:2016-12-08 14:39:17

标签: android android-recyclerview android-sqlite android-adapter recycler-adapter

我需要你的帮助。我想通过RecyclerView中的SwipeToDelete从我的数据库中删除数据。

我已经有一个Swipe类,它从RecycleView中删除项目,我可以从该列表中删除项目,但不能从数据库中删除。

我试图在NoteAdapater(Recycler Adapter)中调用数据库并使用方法removeItem(int position)删除我想要的项目,如下所示:

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)});
}

1 个答案:

答案 0 :(得分:0)

您的问题在这里deleteNote(int note)您的查询表明您要删除ID等于传递参数db.deleteNote(noteList.get(position).getId()); 的项目。

所以你需要做的是传递一个音符ID,而不是一个位置。类似的东西:

{{1}}