[英]How can I use AsyncTask, RecyclerView, and a RecyclerView.Adapter to get images from my phone into my RecyclerView?
[英]How can i create an Alert Dialog Builder in a RecyclerView.Adapter class
HoAlertDialogBuilder 在我的 RecylerView.Adapater 类中,我收到一条错误消息“在 Builder 中不能到 com.example.john.atsnotify.Adapter.PupilGroupAdapter 类”
我可以轻松地在扩展 AppCompatActivity 但不在适配器类中的常规活动类中创建警报对话框生成器。 为什么?
https://pastebin.com/WqXCG1Ch AlertDialog.Builder builder = new AlertDialog.Builder(PupilGroupAdapter.this);
构造函数的参数(您当前PupilGroupAdapter.this
传递PupilGroupAdapter.this
)必须是Context
类型。 您的适配器不是上下文,因此这是失败的。
您可以通过getContext()
方法从任何View
实例中检索上下文。 在您的情况下,您试图通过单击按钮显示警报对话框,因此您可以使用传递给单击侦听器的视图上下文:
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
// ...
viewHolder.btnAdd.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialog(view.getContext()); // pass the context here
}
} );
}
private void showAlertDialog(Context context) { // receive the context here
AlertDialog.Builder builder = new AlertDialog.Builder(context); // use the context here
}
正在寻找类似的方式,而 Context 没有帮助。 通过https://chat.stackoverflow.com/rooms/110530/discussion-between-sukhbir-and-amir-p的聊天记录找到解决方案
在我的代码中使用 Adapter 构造函数参数实现它,如下所示:
public AdapterClass(..., Activity abc, ...){
this.abc = abc;
}
在我启动回收器适配器的活动类中:
AdapterClass newAdapter = new AdapterClass(..., CurrentActivity.this, ...);
和RecyclerAdapter onBindViewHolder
类中的警报对话框:
public void startAlert(..., Activity passedActivity, ...){
AlertDialog.Builder aB = new AlertDialog.Builder(passedActivity);
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.