我正在尝试处理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的上下文。
将XML布局包装在linearLayout内,并为线性布局分配一个点击侦听器