在Android Studio中获取图像ID的问题。

huangapple 未分类评论45阅读模式
英文:

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) {

        }
    });
}

huangapple
  • 本文由 发表于 2020年4月5日 20:26:14
  • 转载请务必保留本文链接:https://java.coder-hub.com/61042556.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定