Android-如何将参数传递给DialogInterface onClickListener?

问题描述 投票:0回答:1

我有一个RecyclerView,并且我想在删除项目之前显示确认窗口。因此,我使用了DialogInterface.onClickListenerMaterialAlertDialogBuilder,但现在出现了一个问题,因为我使用的是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();
}
android android-alertdialog
1个回答
0
投票

如果将参数设置为final,则可以在匿名类中访问它

public void onSwiped(@NonNull final RecyclerView.ViewHolder viewHolder, int direction) {

否则,您必须子类DialogInterface.OnClickListener以添加可以接受ViewHolder作为字段的构造函数

© www.soinside.com 2019 - 2024. All rights reserved.