joe
joe

Reputation: 1371

how to get all child node list values from Firebase database?

My Database

So this is how my database looks like. Each user can add his 3 best players that are stored in userId/My Players/ path as a Map<"Best Players", Player> as it is shown here:

List<String> list = new ArrayList<>();
    list.add(first.getText().toString());
    list.add(second.getText().toString());
    list.add(third.getText().toString());
    Players players = new Players(list);

    Map<String, Object> map = new HashMap<>();
    map.put("Best Players", players);

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    if (user != null) {
        DatabaseReference myRef = database.getReference().child("Users").child(user.getUid()).child("My Players");
        myRef.setValue(map);
    }

Player object contains ArrayList with 3 String objects. So, I would like to go through all users in database and search for each users 0th or 1st or 2nd player from his Best Players list. Any advice how to do that?

Upvotes: 0

Views: 2847

Answers (2)

Shashwat Gupta
Shashwat Gupta

Reputation: 872

you can use code given below: change parameters as per your database

databaseReference.child(Table_Dashboard).orderByChild("title").addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            spin = new ArrayList<String>();
           // spin.add("Dashboard");


            for (DataSnapshot spinnerSnapshot : dataSnapshot.getChildren()) {
                String areaName = spinnerSnapshot.child("title").getValue(String.class);
                spin.add(areaName);


            }

           // spin.remove("Family Details");

            ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(Dashboard.this, android.R.layout.simple_spinner_item,
                    spin);
            spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spinner.setAdapter(spinnerAdapter);
            dismissprogress();
        }


        @Override
        public void onCancelled(DatabaseError databaseError) {
            dismissprogress();
        }
    });

Upvotes: 0

Alex Mamo
Alex Mamo

Reputation: 138944

In order to display those lists, please use this code:

ListView listView = (ListView) findViewById(R.id.list_view);
ArrayList arrayList = new ArrayList<>();

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userId).child("My Players").child("Best Players").child("list");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    @SuppressWarnings("unchecked")
    Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
    String firstList = (String) map.get("0");
    String secondList = (String) map.get("1");
    String thirdList = (String) map.get("2");
    arrayList.add(firstList + ", " + secondList + ", " + thirdList);

    arrayAdapter = new ArrayAdapter<>(this, R.layout.list, arrayList);
    listView.setAdapter(arrayAdapter);
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(eventListener);

Upvotes: 1

Related Questions