AlertDialog Builder внутри holder.itemView.setOnClickListener onBindViewHolder - PullRequest
0 голосов
/ 11 декабря 2018

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

Я думаю, что проблемаэто диалоговое окно с предупреждением не отображается в приложении из-за контекста как такового, что я должен ввести в контексте для отображения alertDialog на экране

public void onBindViewHolder(@NonNull final DishViewHolderModify holder, int position) {

    final Dish dish = dishList.get(position);
    holder.textViewDishName.setText(dish.getmName());
    Picasso.get().load(dish.getmImageUrl()).networkPolicy(NetworkPolicy.OFFLINE).into(holder.imageViewDishImage, new Callback() {
        @Override
        public void onSuccess() {
        }
        @Override
        public void onError(Exception e) {
            Picasso.get().load(dish.getmImageUrl()).into(holder.imageViewDishImage);
        }
    });
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("Click Happen","Yes");
            final String dishName = holder.textViewDishName.getText().toString();
            new AlertDialog.Builder(v.getContext()) // problem over here
            .setTitle("Delete Dish")
            .setMessage("Are you sure you want to delete")
            .setIcon(R.drawable.ic_delete_forever_black_24dp)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    letsDeleteDish(dishName);
                }
            }).setNegativeButton("No",null);
        }
    });

}

1 Ответ

0 голосов
/ 11 декабря 2018

Я считаю, что ваша проблема в том, что вы не вызывали show() в вашем AlertDialog.Builder экземпляре.Я не вижу ничего плохого в вашем аргументе Context.

Это последняя строка компоновщика:

}).setNegativeButton("No",null);

Возможно, это должно выглядеть таквместо:

}).setNegativeButton("No",null)
.show();
...