当我单击RecyclerView
项目时,我想打开一个对话框。单击屏幕上的显示但未打开对话框后出现Toast
,并且出现此错误:
无法添加窗口-令牌null无效;您的活动正在进行吗?
我认为我需要getAvtivity
而不是对话框中的context
,但是我该怎么做?
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private Context context;
private List<Model> modelList;
public MyAdapter(Context context, List<Model> modelList) {
this.context = context;
this.modelList = modelList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.sample1, viewGroup, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
// MyDbHelper myHelper = new MyDbHelper(context);
holder.txtName.setText(modelList.get(position).getName());
holder.txtFamily.setText(modelList.get(position).getFamily());
holder.txtAge.setText(modelList.get(position).getAge());
holder.linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog);
dialog.show();
}
});
}
@Override
public int getItemCount() {
return modelList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView txtName, txtFamily, txtAge;
LinearLayout linearLayout;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
txtName = itemView.findViewById(R.id.txtName);
txtFamily = itemView.findViewById(R.id.txtFamily);
txtAge = itemView.findViewById(R.id.txtAge);
linearLayout = itemView.findViewById(R.id.ll_sample);
}
}
创建警报生成器。
new AlertDialog.Builder(context)
.setTitle("title")
.setMessage("message")
.show();