首页 文章

Swipe中的一些问题可以删除recyclelerview

提问于
浏览
0

下面是我向左或向右滑动时用于删除项目的代码,现在问题是我在快餐栏中放置了一个UNDO按钮 . 当我滑动我从数据库中删除项目时,如何在单击UNDO时进行操作?,因为当按下UNDO时,翻转的项目应该返回 .

if (direction == ItemTouchHelper.LEFT){
                //adapterr.removeItem(position);
                Snackbar snackbar = Snackbar
                        .make(recyclerView, "1 Song deleted", Snackbar.LENGTH_LONG)
                        .setAction("UNDO", new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                              /*  Snackbar snackbar1 = Snackbar.make(recyclerView, "", Snackbar.LENGTH_SHORT);
                                snackbar1.show();*/

                            }
                        });

                snackbar.show();
                openDatabase();
                String whereClause = QueueDatabase.KEY_ID + " = " + queuee.get(position).getId();
                String[] whereArgs = null;
                db.delete(QueueDatabase.TABLE_QUEUE,whereClause,null);
                queuee.remove(position);
                adapterr.notifyItemRemoved(position);
                Toast.makeText(QueueActivity.this, "removed", Toast.LENGTH_SHORT).show();
            }
            else {
               Snackbar snackbar = Snackbar
                        .make(recyclerView, "1 Song deleted", Snackbar.LENGTH_LONG)
                        .setAction("UNDO", new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                              /*  Snackbar snackbar1 = Snackbar.make(recyclerView, "", Snackbar.LENGTH_SHORT);
                                snackbar1.show();*/

                            }
                        });

                snackbar.show();
                openDatabase();
                String whereClause = QueueDatabase.KEY_ID + " = " + queuee.get(position).getId();
                String[] whereArgs = null;
                db.delete(QueueDatabase.TABLE_QUEUE,whereClause,null);
                queuee.remove(position);
                adapterr.notifyItemRemoved(position);
                Toast.makeText(QueueActivity.this, "removed", Toast.LENGTH_SHORT).show();
            }

queuee是一个数组列表,用于从数据库中收集所有数据,然后填充回收器视图 . 请帮忙,谢谢

1 回答

  • 0

    将删除的项目及其位置复制到其他变量中

    int deletedPosition = position;
       YourItemType DeletedItem = YourList.get(position);
    

    单击撤消时将项目插入相同位置

    YourList.add(deletedPosition, DeletedItem);
       YourAdapter.notifyItemInserted(deletedPosition);
    

    我把这个代码放在适配器中 .

相关问题