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

天大地大妈咪最大 提交于 2019-12-12 03:35:59

问题


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?


回答1:


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



回答2:


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


来源:https://stackoverflow.com/questions/43231681/how-to-get-all-child-node-list-values-from-firebase-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!