如何从Firebase数据库获取所有子节点列表值? [英] how to get all child node list values from Firebase database?

查看:718
本文介绍了如何从Firebase数据库获取所有子节点列表值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



所以这就是我的数据库的样子。每个用户都可以添加他的3个最佳玩家,这些玩家存储在userId / My Players /路径中,如图所示:

 列表与LT;字符串> list = new ArrayList<>(); 
list.add(first.getText()。toString());
list.add(second.getText()。toString());
list.add(third.getText()。toString());
玩家=新玩家(名单);

Map< String,Object> map = new HashMap<>();
map.put(最佳玩家,玩家);

FirebaseUser user = FirebaseAuth.getInstance()。getCurrentUser();
FirebaseDatabase数据库= FirebaseDatabase.getInstance();
if(user!= null){
DatabaseReference myRef = database.getReference()。child(Users)。child(user.getUid())。child(My Players);
myRef.setValue(map); Player对象包含带有3个String对象的ArrayList。所以,我想通过数据库中的所有用户,并从他的最佳球员列表中搜索每个用户0或1或2个玩家。任何建议如何做到这一点?

解决方案

为了显示这些列表,请使用以下代码:

  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 ( 列表);
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);
$ b $ arrayAdapter = new ArrayAdapter<>(this,R.layout.list,arrayList);
listView.setAdapter(arrayAdapter);
}

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


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?

解决方案

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

这篇关于如何从Firebase数据库获取所有子节点列表值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆