Java RecyclerView在不删除项目的情况下滑动

Java RecyclerView在不删除项目的情况下滑动,java,android,kotlin,android-recyclerview,Java,Android,Kotlin,Android Recyclerview,我想在RecyclerView中对刷卡执行一些操作。为此,我使用ItemTouchHelper.SimpleCallback 但当我刷卡时,一个项目从我的回收视图中消失 我该如何解决这个问题?我想显示一些滑动动画,并在不删除项目的情况下调用onsweed()回调 val simpleItemTouchCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT

我想在RecyclerView中对刷卡执行一些操作。为此,我使用ItemTouchHelper.SimpleCallback

但当我刷卡时,一个项目从我的回收视图中消失

我该如何解决这个问题?我想显示一些滑动动画,并在不删除项目的情况下调用onsweed()回调

val simpleItemTouchCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
    override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
        return false
    }

    override fun onSwiped(viewHolder: RecyclerView.ViewHolder, swipeDir: Int) {
        val position = viewHolder.adapterPosition
        val item = (recyclerView.adapter as DashboardAdapter).getItem(position)

        if (swipeDir == ItemTouchHelper.LEFT) {
            // Close query
            ...

        } else if (swipeDir == ItemTouchHelper.RIGHT) {
            // Take query
            ...
        }

        recyclerView.adapter?.notifyDataSetChanged()
    }
}

val itemTouchHelper = ItemTouchHelper(simpleItemTouchCallback)
itemTouchHelper.attachToRecyclerView(recyclerView)

您可以通过添加到ViewHolder字段来实现这一点,该字段将包含有关视图是否可切换的信息,在方法OnSweep上,将其设置为false,并使用方法translationX(0)将项目动画设置为原始x,如果您也在垂直方向上滑动,则可以使用to transaltionY(0)。如果您这样做,该项目将无法再次刷卡

   private ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {

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

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        Log.e("Swiped","Swiped");
        ((YourViewHolder) viewHolder).setSwipeable(false);
        View item = viewHolder.itemView;
        item.animate().translationX(0);
    }

    @Override
    public int getSwipeDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
        if(((RemarkAdapter.RemarkViewHolder) viewHolder).isSwipeable()){
            return super.getSwipeDirs(recyclerView, viewHolder);
        }
        else{
            return 0;
        }
    }

};

你找到解决问题的方法了吗??