【发布时间】:2026-01-22 19:50:01
【问题描述】:
我正在开发一个 Android 聊天应用程序,我正在使用 RecyclerView 来列出消息。
我已经编写了适配器,但是在检测布局内的元素(在本例中为 TextView)何时被点击时遇到问题。
这是我的适配器:
public class ChatRoomThreadAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private class ViewHolder extends RecyclerView.ViewHolder {
TextView message, timestamp;
private ViewHolder(View view) {
super(view);
message = (TextView) itemView.findViewById(R.id.message);
timestamp = (TextView) itemView.findViewById(R.id.timestamp);
}
}
public ChatRoomThreadAdapter(Context mContext, ArrayList<Message> messageArrayList, String userId) {
this.mContext = mContext;
this.messageArrayList = messageArrayList;
this.userId = userId;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView;
itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
((ViewHolder) holder).message.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (((ViewHolder) holder).timestamp.getVisibility() == View.GONE) {
((ViewHolder) holder).timestamp.setVisibility(View.VISIBLE);
} else {
((ViewHolder) holder).timestamp.setVisibility(View.GONE);
}
}
});
}
@Override
public int getItemCount() {
return messageArrayList.size();
}
}
当前的 onClick 有效,但我必须在 message 上单击两次才能触发 onClick。为了解决这个问题,我已经搜索并尝试了 3 天的无尽解决方案,但到目前为止,互联网上的解决方案都没有奏效。
【问题讨论】:
-
您是否登录以查看
onClick是否实际上两次都发生了,但视图的可见性实际上只起作用了一次。另外,timestamp视图的原始可见性是什么?如果是INVISIBLE而不是GONE,那将说明您所看到的。第一次单击将其设置为GONE(看起来没有任何反应),然后第二次将其设置为VISIBLE。 -
onClick 只发生一次。我已经记录了。
标签: java android android-recyclerview onclicklistener