Как показать все данные логина для администратора с помощью Firebase? - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу показать данные всех пользователей из firebase без идентификатора пользователя в firebase RecyclerView. Как это может быть возможно? Я работаю над своим первым проектом Firebase, и я новичок в Firebase. Вот мой код, но он показывает только данные для входа в систему.

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);
     }

база огня

database structure image

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Вы должны ссылаться на вашу базу данных на UserName, а затем iterate через каждого пользователя, чтобы получить данные. Проверьте ниже:

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

    }
});
0 голосов
/ 06 февраля 2020

Чтобы решить эту проблему, используйте следующие строки кода:

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

Результат в logcat будет:

Azar khan
khan
...

Если вы хотите использовать библиотеку Firebase-UI чтобы отобразить свой элемент в списке, см. мой ответ из следующего поста:

...