如何在 RecyclerView 适配器中的 ClickListener 上显示 AlertDialog
Posted
技术标签:
【中文标题】如何在 RecyclerView 适配器中的 ClickListener 上显示 AlertDialog【英文标题】:How to display an AlertDialog on ClickListener in a RecyclerView Adapter 【发布时间】:2021-11-29 17:31:30 【问题描述】:我想在用户按下删除图像按钮时为他显示一个警告对话框。但是,按下按钮时应用会崩溃。
这是适配器内 onClickListener 的代码:
holder.delete.setOnClickListener(new View.OnClickListener()
String productId = String.valueOf(item.getId());
@Override
public void onClick(View v)
AlertDialog.Builder alertDialog = new AlertDialog.Builder(mCtx);
alertDialog.setTitle("App Name");
alertDialog.setMessage("Are you sure you want to delete this item?");
alertDialog.setPositiveButton("Delete", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
deleteItem(productId);
dialog.cancel();
);
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
dialog.cancel();
);
AlertDialog dialog = alertDialog.create();
dialog.show();
);
这就是我的 LogCat 的样子: 错误在这一行:
AlertDialog dialog = alertDialog.create();
【问题讨论】:
这能回答你的问题吗? Unfortunately MyApp has stopped. How can I solve this? 您设置的是局部变量而不是字段。删除 AlertDialog 定义 不,Logcat 中没有显示任何内容。它只写应用程序已死 我非常怀疑,您是否将 logcat 设置为正确的设备?发张图片 是的,我不知道,我已将图片添加到问题中 【参考方案1】:AlertDialog.Builder alertDialog = new AlertDialog.Builder(mCtx);
对话框需要活动。如果你传递上下文,你会收到一个错误
使用 onclickListener 接口并在您的活动中实现,然后将您的活动传递给您的对话框!
【讨论】:
以上是关于如何在 RecyclerView 适配器中的 ClickListener 上显示 AlertDialog的主要内容,如果未能解决你的问题,请参考以下文章
如何在MVVM架构中观察RecyclerView适配器中的LiveData?
如何使用适配器为recyclerview从字符串数组列表中的元素获取字符串
如何在我的 recyclerview 适配器中将 API 日期转换为 Kotlin 中的字符串?
如何使用Recyclerview中单击的适配器位置获取数据?