Android ItemTouchHelper onChildDraw使itemView返回其原始位置

问题描述

我在Simpleitemtouchhelper类中以以下方式覆盖方法onChildDraw

@Override
public void onChildDraw(Canvas c,RecyclerView recyclerView,RecyclerView.ViewHolder viewHolder,float dX,float dY,int actionState,boolean isCurrentlyActive) {
    if (actionState == itemtouchhelper.ACTION_STATE_SWIPE) {
        float width = (float) viewHolder.itemView.getWidth();
        float alpha = 1.0f - Math.abs(dX) / width;
        viewHolder.itemView.setAlpha(alpha);
        viewHolder.itemView.setTranslationX(dX);
    } else {
        super.onChildDraw(c,recyclerView,viewHolder,dX,dY,actionState,isCurrentlyActive);
    }
}

当您向左或向右滑动时,这仅启用淡入淡出动画。

在我的适配器中,我已经实现了itemtouchhelperAdapter并通过以下方式覆盖onItemdismiss以便显示AlertDialog来确认是否要删除所选元素:>

public class TeambuilderAdapter extends RecyclerView.Adapter<TeambuilderAdapter.ViewHolder> implements itemtouchhelperAdapter {

    @Override
    public void onItemdismiss(int position) {

        DialogInterface.OnClickListener dialogClickListener =(dialog,which) -> {
            if (which == DialogInterface.BUTTON_POSITIVE) {
                mData.remove(position);
                notifyItemRemoved(position);
                ((PokemonTeambuildertabactivity) mContext).refreshTeamList();
            }
        };

        new AlertDialog . Builder (mContext)
                .setTitle(mContext.getString(R.string.remove_team))
                .setMessage(mContext.getString(R.string.remove_team_question))
                .setPositiveButtonIcon(ContextCompat.getDrawable(mContext,R.drawable.ic_baseline_check_circle_14))
                .setPositiveButton(mContext.getString(R.string.confirm),dialogClickListener)
                .setNegativeButtonIcon(ContextCompat.getDrawable(mContext,R.drawable.ic_baseline_cancel_14))
                .setNegativeButton(mContext.getString(R.string.decline),dialogClickListener)
                .show();

    }
...
}

一切正常,问题在于,如果我按“取消”按钮,则滑动的项目消失,仅当我重新进入活动时才再次出现。

当我按取消或退出对话框时,如何恢复原始位置?

解决方法

您的dialogClickListener没有处理取消按钮操作。
对于取消操作,获取itemView以及setTranslationX(0)setAlpha(1)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...