Firebase数据库,如何使用数据库节点的内容填充Spinner?

时间:2018-05-16 04:47:11

标签: java android for-loop firebase-realtime-database spinner

我正在尝试使用节点的内容填充微调器。该节点称为成员,结构如下:

Members:
-LC7n2qjCocAME4XiGuH: "ZFjiRpFJ7HgxNWBQYOhNwS6HUys2"
-LC7nSFctVUdGr6pp7k-: "XIiVCBeu5TaxMCZY7ZIsINtKKBB2"

我正在尝试使用分配给键的数据填充Spinner。因此在这种情况下,微调器将有两个条目“ZFjiRp ...”和“XIiVC ...”。在应用程序运行时,成员节点将添加和删除数据,并且微调器需要反映这一点。我想一个for循环来获取成员节点的子节点数来填充微调器可以工作,但我不知道如何通过节点并逐个读取数据。

提前致谢。

2 个答案:

答案 0 :(得分:0)

  1. 获取firebase数据库的数据库参考。
  2. 在该引用
  3. 上附加childeventlistener
  4. OnChildAddedOnChildChanged回调中获取值 datasnapshot对象并绑定到您的微调器。

答案 1 :(得分:0)

你可以这样做:

final ArrayList<String> arrayList = new ArrayList<>();
        firebaseReference.child("Members").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot != null) {
                    Iterator<DataSnapshot> iterable = dataSnapshot.getChildren().iterator();
                    for (Iterator<DataSnapshot> it = iterable; it.hasNext(); ) {
                        DataSnapshot dataSnapshot1 = it.next();
                        arrayList.add(dataSnapshot1.getValue(String.class));
                    }
                    //set arraylist here to spinner adapter
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });