私はAndroidのチャットアプリケーションで作業していますが、メッセージを表示するためにRecyclerViewを使用しています。android - recyclerviewのOnClickListenerが最初のクリックで動作しない
私はアダプタを書いていますが、レイアウト内の要素(この場合は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は動作しますが、私はのonClickをトリガするためにmessage
に二回クリックする必要があります。私はこの問題を解決するために3日間無限のソリューションを探し求めてきましたが、インターネット上のソリューションのどれもこれまでに働いていませんでした。
'onClick'が実際に両方の時間に起こっているかどうかを確認するためにログオンしましたが、ビューの可視性は実際には1回しか動作しません。また、 'timestamp'ビューの元の可視性は何ですか?あなたが見ているものを説明する 'GONE'ではなく' INVISIBLE'であれば。最初のクリックは 'GONE'(何も起こらないように見えます)に設定し、2番目のボタンは' VISIBLE'に設定します。 –
onClickは1回だけ発生します。私はそれを記録した。 – zeeks