单击适配器中的recyclerview项时如何创建和打开对话框

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

当我单击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);
        }
    }
android android-dialog
1个回答
0
投票

创建警报生成器。

new AlertDialog.Builder(context)
.setTitle("title")
.setMessage("message")
.show();
© www.soinside.com 2019 - 2024. All rights reserved.