Firebase android从表中获取所有内容

时间:2019-05-19 20:39:20

标签: android firebase firebase-realtime-database

我需要一些帮助。 我在firebase中有一个实时数据库。我需要带出该表中的所有记录。 在设置连接之后,我尝试了以下命令:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("rlmb-loterias");

我需要表的全部内容并生成一个数组或一个json

example my databe strucure

2 个答案:

答案 0 :(得分:0)

首先,您必须获取所有键,然后才能获得像这样的表值:-

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("rlmb-loterias");

usersRef .addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for (DataSnapshot snap : dataSnapshot.getChildren()){
                             usersRef.child(snap.getKey()).addListenerForSingleValueEvent(new 
                                       ValueEventListener() {
                                       @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        String data = dataSnapshot.getValue();
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                             //enter code here
                    }
                });

                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                             //enter code here
                    }
                });

答案 1 :(得分:0)

为了获取键和相应的值,您需要在参考上附加一个侦听器。假设rlmb-loterias节点不是您的根节点,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference rlmbLoteriasRef = rootRef.child("rlmb-loterias");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String key = ds.getKey();
            String value = ds.getValue(String.class);
            Log.d(TAG, key + " / " + value);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
rlmbLoteriasRef.addListenerForSingleValueEvent(valueEventListener);

如果您的rlmb-loterias节点是您的根密钥,则只需将侦听器附加到rootRef

rootRef.addListenerForSingleValueEvent(valueEventListener);