我如何为RecyclerView列表元素设置点击侦听器以显示AlertDialog?

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

我正在尝试处理RecyclerView列表元素的onItemClick事件,以便在选择一个项目时显示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()并且不为null的上下文。

android android-recyclerview android-alertdialog onitemclicklistener android-viewholder
1个回答
0
投票

将XML布局包装在linearLayout内,并为线性布局分配一个点击侦听器

© www.soinside.com 2019 - 2024. All rights reserved.