Search code examples
androidfirebasefirebase-realtime-databasefirebaseui

How can I compare this 2 value then show to FirebaseRecyclerAdapter?


I want to connect the user id with the same key in Users, then show the key to FirebaseRecyclerAdapter. I get the key in Friend child already but don't know how to match this to Users.

enter image description here

And my code:

    mFriendList = FirebaseDatabase.getInstance().getReference().child("Friends").child(current_id);

    mFriendDatabase = FirebaseDatabase.getInstance().getReference().child("Users");

    mFriendList.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {

                String sd = snapshot.getKey(); //key from Friends

                final FirebaseRecyclerAdapter<Users_Friends, UsersFriendViewHolder> firebaseRecyclerAdapter =
                        new FirebaseRecyclerAdapter<Users_Friends, UsersFriendViewHolder>(
                                Users_Friends.class,
                                R.layout.users_single_friend_layout,
                                UsersFriendViewHolder.class,
                                filter
                        ) {
                            @Override
                            protected void populateViewHolder(UsersFriendViewHolder viewHolder, Users_Friends users, int position) {
                                viewHolder.setDisplayName(users.getName());
                                viewHolder.setStatusUsers(users.getStatus());
                                viewHolder.setUserImage(users.getImage(), getContext().getApplicationContext());

                                final String user_id = getRef(position).getKey();

                                viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        Intent profileIntent = new Intent(getActivity(), ProfileActivity.class);
                                        profileIntent.putExtra("user_id", user_id);
                                        startActivity(profileIntent);
                                    }

                                });
                            }
                        };
                mReqList.setAdapter(firebaseRecyclerAdapter);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Solution

  • You only need to use exists() method directly on the dataSnapshot object like this:

    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.child(current_id).exists()) {
                Log.d("TAG", "User exists");
            } else {
                Log.d("TAG", "User does not exist");
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    mFriendDatabase.addListenerForSingleValueEvent(eventListener);