如何从Firebase中检索包含另一个String列表的完整对象列表?

时间:2017-09-04 10:57:28

标签: java android firebase firebase-realtime-database

我在 Firebase 上存储了一些人物对象列表。我想从数据库中将此完整列表检索到新人列表中。 class perosn包含另一个List批处理 我的班级人员看起来像:

public class person {
public String name,sid;
public HashMap<String,String> batch;
public int cls;
}

我使用的代码是:

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference fDatabaseRoot = database.getReference("studentsList");
    fDatabaseRoot.orderByChild("name").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot areaSnapshot : dataSnapshot.getChildren()) {
                Map<String,person> td = 
                        (HashMap<String,person>)areaSnapshot.getValue();


               // arrayListStudent= (List<person>) td.values();
                 // Log.d("aaa1",arrayListStudent.toString());
            }
            //Log.d("aaa",arrayListStudent.toString());
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

我在哪里出错。请给出一些提示和建议.... 这是我的数据库结构的屏幕截图:

screenshot

1 个答案:

答案 0 :(得分:0)

请使用此代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference studentsListRef = rootRef.child("studentsList");
Query query = studentsListRef.orderByChild("name");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            String key1 = ds.child("batch").child("0").getValue(String.class);
            String key2 = ds.child("batch").child("1").getValue(String.class);
            Log.d("TAG", name + " / " + key1 + " / " + key2);
        }
    }

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

通过这种方式,您将获得name以及batch下的两个字段的值。