0

I want to show data of all users from firebase without users id in firebase RecyclerView. How can it be possible? I am working on my first firebase project and I am new in Firebase. Here is my code but it shows just login user data.

java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dash_board);

        recyclerView=findViewById(R.id.recycler);

        mAuth=FirebaseAuth.getInstance();
        FirebaseUser mUser=mAuth.getCurrentUser();
        final String uId=mUser.getUid();
        mDatabase= FirebaseDatabase.getInstance().getReference().child("UserName").child(uId);
        mDatabase.keepSynced(true);

        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        linearLayoutManager.setReverseLayout(true);
        linearLayoutManager.setStackFromEnd(true);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(linearLayoutManager);
    }

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseRecyclerAdapter<Data, DashBoard.MyViewHoler>adapter= new FirebaseRecyclerAdapter<Data, MyViewHoler>(Data.class, R.layout.item_data, DashBoard.MyViewHoler.class,mDatabase) {

            @Override
            protected void populateViewHolder(MyViewHoler myViewHoler, Data data, int i) {
                myViewHoler.setName(data.getNamee());
                myViewHoler.setCity(data.getCityy());
                myViewHoler.setCell(data.getCelll());
                myViewHoler.setFund(data.getFundd());

            }
        };

        recyclerView.setAdapter(adapter);
     }

firebase

database structure image

Md. Asaduzzaman
  • 14,963
  • 2
  • 34
  • 46

2 Answers2

0

To solve this, please use the following lines of code:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("UserName").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            Log.d(TAG, name);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

The result in the logcat will be:

Azar khan
khan
...

If you want to use Firebase-UI library to display your element in a list, please see my answer from the following post:

Alex Mamo
  • 130,605
  • 17
  • 163
  • 193
0

You should reference your database to UserName and then iterate through each user to get data. Check below:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("UserName");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            for(DataSnapshot childSnapshot: userSnapshot.getChildren()) {
                Data data = childSnapshot.getValue(Data.class);


            }
        }
    }

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

    }
});
Md. Asaduzzaman
  • 14,963
  • 2
  • 34
  • 46
  • NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.ChildEventListener com.google.firebase.database.Query.addChildEventListener(com.google.firebase.database.ChildEventListener)' on a null object reference – Waqar Ahmed Feb 06 '20 at 12:11
  • But I have initialize `mDatabase`, Probably the error from other code. Can you try directly with `FirebaseDatabase.getInstance().getReference().child("UserName").addListenerForSingleValueEvent...` and check – Md. Asaduzzaman Feb 06 '20 at 12:15
  • Probably it conflicts with your variable, I have change the name. Can you try with updated code and let me know? – Md. Asaduzzaman Feb 06 '20 at 12:20
  • @waqar-ahmed, Have you checked the updated answer? Is this help you? – Md. Asaduzzaman Feb 11 '20 at 07:05