как создать и открыть диалоговое окно, когда щелкаете на элементах программы просмотра в адаптере - PullRequest
0 голосов
/ 30 января 2020

Я хочу открыть диалоговое окно, когда нажимаю на элемент RecyclerView. Toast работает после нажатия кнопки Показать на экране, но не открывает диалоговое окно, и эта ошибка:

Невозможно добавить окно - нулевой токен недействителен; ваша деятельность запущена?

Я думаю, мне нужно 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);
        }
    }

1 Ответ

0 голосов
/ 30 января 2020

создать построитель оповещений.

new AlertDialog.Builder(context)
.setTitle("title")
.setMessage("message")
.show();
...