如何从Firebase检索特定密钥?

时间:2018-08-12 18:08:39

标签: java android firebase firebase-realtime-database

Firebase Database Image

我也看到过类似的问题,但到目前为止,没有一个答案对我有帮助。 我有一个用户ID密钥,在每个帖子中,我都有一个密钥,我想为每个帖子实现类似功能,但是当尝试检索特定帖子的密钥时,由于onChildAdded方法,我会得到最后一个密钥被所有孩子召集一次,但我想要该特定帖子的键。

likeReference = FirebaseDatabase.getInstance().getReference().child("Post").child(uid);
    likeReference.keepSynced(true);
    likeReference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            Log.i("onChildAdded", "Method invoked");
            //progressBar.setVisibility(View.VISIBLE);
            Post post = dataSnapshot.getValue(Post.class);
            String key = dataSnapshot.getKey();

            secondReference = likeReference.child(key);

            //progressBar.setVisibility(View.INVISIBLE);
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }

    });

    like.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.i("Like:","Like clicked");
            if(post.isLiked()){
                post.setLiked(false);
                secondReference.child("liked").setValue(post.isLiked());
                like.setImageResource(R.drawable.ic_thumb_up);
            }else{
                post.setLiked(true);
                secondReference.child("liked").setValue(post.isLiked());
                like.setImageResource(R.drawable.like);
            }
        }
    });

0 个答案:

没有答案