Android 刷卡删除回收器视图立即刷卡时删除项目

Android 刷卡删除回收器视图立即刷卡时删除项目,android,android-recyclerview,Android,Android Recyclerview,我已经使用new ItemTouchHelper.SimpleCallback编写了刷卡删除回收器视图 我的问题是,当我滑动项目时,会出现一个对话框,当我说“是”时,只会从“回收器”视图中删除该视图。但现在,视图在对话框出现之前被删除。这里有我遗漏的东西吗 public class SwipeToDeleteRecyclerView extends RecyclerView { private static final String TAG = SwipeToDeleteRec

我已经使用new ItemTouchHelper.SimpleCallback编写了刷卡删除回收器视图

我的问题是,当我滑动项目时,会出现一个对话框,当我说“是”时,只会从“回收器”视图中删除该视图。但现在,视图在对话框出现之前被删除。这里有我遗漏的东西吗

    public class SwipeToDeleteRecyclerView extends RecyclerView {

    private static final String TAG = SwipeToDeleteRecyclerView.class.getSimpleName();


    private OnSwipeListener onSwipeListener;

    public SwipeToDeleteRecyclerView(Context context) {
        super(context);
        init();
    }

    public SwipeToDeleteRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public SwipeToDeleteRecyclerView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }


    private void init() {
        SwipeSimpleCallback swipeCallback = new SwipeSimpleCallback();
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(swipeCallback);
        itemTouchHelper.attachToRecyclerView(this);
    }

    public void setOnSwipeListener(OnSwipeListener onSwipeListener) {
        this.onSwipeListener = onSwipeListener;
    }

    public OnSwipeListener getSwipeListener() {
        return onSwipeListener;
    }

    private class SwipeSimpleCallback extends ItemTouchHelper.SimpleCallback {
        private final String TAG = SwipeSimpleCallback.class.getSimpleName();

        public SwipeSimpleCallback() {
            this(0, ItemTouchHelper.LEFT);
        }

        SwipeSimpleCallback(int dragDirs, int swipeDirs) {
            super(dragDirs, swipeDirs);
        }

        @Override
        public boolean onMove(RecyclerView recyclerView, ViewHolder viewHolder, ViewHolder target) {
            return true;
        }

        @Override
        public void onSwiped(ViewHolder viewHolder, int direction) {

            if (onSwipeListener != null) {
                onSwipeListener.onSwipe(viewHolder, direction);
            } else {
                LogUtil.warn(TAG, "No Swipe listener attached to " + SwipeToDeleteRecyclerView.class.getSimpleName());
            }
        }
    }
}
这就是我设置回调的方式

recyclerView.setOnSwipeListener(new OnSwipeListener() {
        @Override
        public void onSwipe(RecyclerView.ViewHolder viewHolder, int swipeDirection) {
            position = viewHolder.getAdapterPosition();
            showConfirmDialog();
        }
    });

尝试在onsweep()上设置对话框

例:


}

您有解决此问题的方法吗?我也需要实现这一点,但我面临着同样的问题。
public void onSwiped(final RecyclerView.ViewHolder viewHolder, int swipeDir) {
    final int position = viewHolder.getAdapterPosition();
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
    alertDialogBuilder.setMessage("Are you sure that you want to remove it?");
    alertDialogBuilder.setPositiveButton("remove", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface arg0, int arg1) {
            recyclerView.getAdapter().notifyItemRemoved(position);
        }
    });
    alertDialogBuilder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            clearView(recyclerView, viewHolder);
        }
    });
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();