如何解决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)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。