英文:
Problem In Getting Image id In android studio
问题
这是我的适配器类,我在这里尝试创建"点赞"按钮的效果,但每次我点击我的任何图片时,我的其他图片的ID(即用户ID)会自动被点赞,也就是说其他图片的点赞按钮颜色也会变为红色...所以我想知道我做错了什么...我对Android Studio非常新手...如果有人能帮助我。
// 从这里获取我的Firebase数据库中的图像,我想要对图像进行点赞
zone-3af06
MBlog
-M48bKT9NGnY0w-H7Ikg
desc:
"...."
image:
"https://"
postid:
""
timestamp:
"1586077980415"
title:
"...."
userid:
""
username:
""
-M48bSbuJJZZZI7y4kIX
desc:
"kkk"
image:
"https://firebasestorage"
postid:
""
timestamp:
"1586078013808"
title:
"ooo"
userid:
""
username:
""
// 点赞函数调用
isLiked(blog.getUserid(), holder.like);
nrLikes(holder.likes, blog.getUserid());
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.like.getTag().equals("like")) {
FirebaseDatabase.getInstance().getReference().child("Likes").child(blog.getUserid())
.child(firebaseUser.getUid()).setValue(true);
} else {
FirebaseDatabase.getInstance().getReference().child("Likes").child(blog.getUserid())
.child(firebaseUser.getUid()).removeValue();
}
}
});
// 用户点赞函数
private void isLiked(String userid, final ImageView imageView) {
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(userid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child(firebaseUser.getUid()).exists()) {
imageView.setImageResource(R.drawable.ic_liked);
imageView.setTag("liked");
} else {
imageView.setImageResource(R.drawable.ic_like);
imageView.setTag("like");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
// 用户点赞计数
private void nrLikes(final TextView likes, String userid) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(userid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
likes.setText(dataSnapshot.getChildrenCount() + " Likes");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
英文:
this is my adaptor class ,here i am trying to build like button effect,but every time i clicked any image of mine the other image of my id(ie.user id ) gets liked automatically means colour of like button of the other image also turns red...so i just wanted know what iam doing wrong...i am vary new to android studio...if somebody could help
//this mine firebase database image from here i want image to be like
zone-3af06
MBlog
-M48bKT9NGnY0w-H7Ikg
desc:
"...."
image:
"https://"
postid:
""
timestamp:
"1586077980415"
title:
"...."
userid:
""
username:
""
-M48bSbuJJZZZI7y4kIX
desc:
"kkk"
image:
"https://firebasestorage"
postid:
""
timestamp:
"1586078013808"
title:
"ooo"
userid:
""
username:
""
//like funcalling
isLiked(blog.getUserid(), holder.like);
nrLikes(holder.likes, blog.getUserid());
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.like.getTag().equals("like")) {
FirebaseDatabase.getInstance().getReference().child("Likes").child(blog.getUserid())
.child(firebaseUser.getUid()).setValue(true);
} else {
FirebaseDatabase.getInstance().getReference().child("Likes").child(blog.getUserid())
.child(firebaseUser.getUid()).removeValue();
}
}
});
//user like function
private void isLiked(String userid, final ImageView imageView) {
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
Heading
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(userid);
// String uid = reference.child("users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child(firebaseUser.getUid()).exists()) {
imageView.setImageResource(R.drawable.ic_liked);
imageView.setTag("liked");
} else {
imageView.setImageResource(R.drawable.ic_like);
imageView.setTag("like");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
//count of user likes
private void nrLikes(final TextView likes, String userid) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(userid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
likes.setText(dataSnapshot.getChildrenCount() + " Likes");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
专注分享java语言的经验与见解,让所有开发者获益!
评论