Как я могу установить прослушиватель щелчков для элемента списка RecyclerView для отображения AlertDialog? - PullRequest
2 голосов
/ 07 января 2020

Я пытаюсь обработать событие onItemClick для элемента списка RecyclerView, чтобы отобразить AlertDialog при выборе элемента. Для этого я поместил обработчик щелчков в методе bindViewHolder, где у меня есть доступ к фактическому визуальному компоненту, но я все еще получаю ошибку

Unable to add window -- token null is not valid; is your activity running? 

Вот мой класс ViewHolder

public class MessageViewHolder extends RecyclerView.ViewHolder {
    private TextView senderTextView;
    private TextView messageTextView;
    private TextView dateTextView;

    public MessageViewHolder(final View itemView) {
        super(itemView);
        senderTextView = itemView.findViewById(R.id.chatMessageSenderTW);
        messageTextView = itemView.findViewById(R.id.chatMessageTW);
        dateTextView = itemView.findViewById(R.id.chatMessageDateTW);
    }

    public void bindViewHolder(final ChatMessage chatMessage) {
        senderTextView.setText(chatMessage.getSender());
        messageTextView.setText(chatMessage.getMessage());
        dateTextView.setText(chatMessage.getDate());

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder myDialog = new AlertDialog.Builder(v.getContext());
                myDialog
                        .setTitle("Confirmation")
                        .setMessage("Please confirm the item selection")
                        .setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        })
                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        })
                        .show();
            }
        });

    }

}

Я также проверил контекст, который v.getContext() и не является нулевым.

1 Ответ

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

оберните ваш XML макет внутри linearLayout и назначьте слушатель щелчка линейному макету

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...