我有一个RecyclerView
,并且我想在删除项目之前显示确认窗口。因此,我使用了DialogInterface.onClickListener
和MaterialAlertDialogBuilder
,但现在出现了一个问题,因为我使用的是ItemTouchHelper
,所以我可以通过滑动来删除,并且无法按顺序将viewHolder
参数传递给DialogInterface.onClickListener
删除项目。
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
groupViewModel.delete(groupAdapter.getGroupAt(viewHolder.getAdapterPosition()));
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
};
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(GroupListActivity.this);
builder.setMessage("Are you sure you want to finish the match?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
如果将参数设置为final,则可以在匿名类中访问它
public void onSwiped(@NonNull final RecyclerView.ViewHolder viewHolder, int direction) {
否则,您必须子类DialogInterface.OnClickListener
以添加可以接受ViewHolder作为字段的构造函数