Какое условие я могу написать, чтобы можно было выбрать только один ImageView
, один или другой. У меня есть кнопки как и нелюбовь (ImageView), которые пользователь может нажать на сообщение, но можно выбрать только одну за один раз, и если она выбрана, а пользователь нажимает кнопку другой, первый должен отменить свой выбор. Когда в моем случае выбрано, ImageView меняет цвета.
Какое условие я могу написать, чтобы можно было выбирать только одно или другое, а не оба?
Я обновил свой код, но я все еще не могу заставить его работать. Даже с isSelected(), setSelected()
. Может ли кто-нибудь сообщить мне, что я все еще делаю неправильно? Почему не только один ImageView выбран. Я все еще могу выбрать оба одновременно ...
CommentAdapter
public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.ViewHolder> {
private Context mContext;
private List<Comment> mComment;
private String postid;
private FirebaseUser mFirebaseUser;
public CommentAdapter(Context mContext, List<Comment> mComment, String postid) {
this.mContext = mContext;
this.mComment = mComment;
this.postid = postid;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.comment_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
mFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
final Comment comment = mComment.get(position);
holder.comment.setText(comment.getComment());
commentLike(comment.getCommentid(), holder.commentLike);
commentDislike(comment.getCommentid(), holder.commentDislike);
getUserInfo(holder.image_profile, holder.username, comment.getPublisher());
commentLikesNumber(holder.commentLikesNumber, comment.getCommentid());
commentDislikesNumber(holder.commentDislikesNumber, comment.getCommentid());
holder.commentLike.setOnClickListener(v -> {
if (holder.commentLike.getTag().equals("like")) {
FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(comment.getCommentid()).child("Likes").child(mFirebaseUser.getUid()).setValue(true);
} else {
FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(comment.getCommentid()).child("Likes").child(mFirebaseUser.getUid()).removeValue();
}
});
holder.commentDislike.setOnClickListener(v -> {
if (holder.commentDislike.getTag().equals("dislike")) {
FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(comment.getCommentid()).child("Dislikes").child(mFirebaseUser.getUid()).setValue(true);
Toast.makeText(mContext, "Don't be mean", Toast.LENGTH_SHORT).show();
} else {
FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(comment.getCommentid()).child("Dislikes").child(mFirebaseUser.getUid()).removeValue();
}
});
holder.image_profile.setOnClickListener(v -> {
Intent intent = new Intent(mContext, MainActivity.class);
intent.putExtra("publisherid", comment.getPublisher());
mContext.startActivity(intent);
});
holder.itemView.setOnLongClickListener(v -> {
if (comment.getPublisher().equals(mFirebaseUser.getUid())) {
AlertDialog alertDialog = new AlertDialog.Builder(mContext).create();
alertDialog.setTitle("Do you want to delete this comment?");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "No",
(dialog, which) -> dialog.dismiss());
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Yes",
(dialog, which) -> {
FirebaseDatabase.getInstance().getReference("Comments").child(postid).child(comment.getCommentid())
.setValue(null).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Toast.makeText(mContext, "Your comment has been deleted", Toast.LENGTH_SHORT).show();
}
});
dialog.dismiss();
});
alertDialog.show();
}
return true;
});
}
@Override
public int getItemCount() {
if (mComment != null) {
return mComment.size();
} else {
return 0;
}
}
static class ViewHolder extends RecyclerView.ViewHolder {
CircleImageView image_profile;
TextView username, comment, commentLikesNumber, commentDislikesNumber;
ImageView commentLike, commentDislike;
ViewHolder(@NonNull View itemView) {
super(itemView);
image_profile = itemView.findViewById(R.id.image_profile);
comment = itemView.findViewById(R.id.comment);
username = itemView.findViewById(R.id.username);
commentLike = itemView.findViewById(R.id.icon_thumb_up_grey);
commentDislike = itemView.findViewById(R.id.icon_thumb_down_grey);
commentLikesNumber = itemView.findViewById(R.id.comment_likes_number);
commentDislikesNumber = itemView.findViewById(R.id.comment_dislikes_number);
}
}
private void getUserInfo(final CircleImageView prof_image, final TextView username, String publisherid) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users").child(publisherid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
if (user != null) {
Glide.with(mContext.getApplicationContext()).load(user.getImageurl()).into(prof_image);
username.setText(user.getUsername());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void commentLike(final String commentid, final ImageView imageView) {
if (commentid != null) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(commentid).child("Likes");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (mFirebaseUser != null)
if (dataSnapshot.child(mFirebaseUser.getUid()).exists()) {
imageView.setImageResource(R.drawable.ic_thumb_up_red);
imageView.setTag("liked");
} else {
imageView.setImageResource(R.drawable.ic_thumb_up_grey);
imageView.setTag("like");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
private void commentDislike(final String commentid, final ImageView imageView) {
if (commentid != null) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(commentid).child("Dislikes");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (mFirebaseUser != null)
if (dataSnapshot.child(mFirebaseUser.getUid()).exists()) {
imageView.setImageResource(R.drawable.ic_thumb_down_black);
imageView.setTag("disliked");
} else {
imageView.setImageResource(R.drawable.ic_thumb_down_grey);
imageView.setTag("dislike");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
private void commentLikesNumber(TextView commentLikesNumber, String commentid) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(commentid).child("Likes");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
commentLikesNumber.setText(dataSnapshot.getChildrenCount() + "");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void commentDislikesNumber(TextView commentDislikesNumber, String commentid) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comment Liked or Disliked").child(commentid).child("Dislikes");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
commentDislikesNumber.setText(dataSnapshot.getChildrenCount() + "");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}