Android Firebase DataSnapshot 转换为类

Gur*_*can 0 android class snapshot firebase firebase-realtime-database

我有一个 firebase 数据库。当我从快照中获取值时,我的 HashMap 如下:

快照中的 HashMap

我有一个 Snap 课程,如下所示。如何将 DataSnapshot 转换为类的列表,例如 List<Snap> snapList = (HashMap<String,Object>) dataSnapshot.child(USER_PHONE).child("friends").getValue();

public class Snap {

    String key;
    String value;

    public  Snap(){

    }
    public Snap(String key, String value) {
        this.key = key;
        this.value = value;
    }

    public String getKey() {
        return key;
    }

    public String getValue() {
        return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*amo 5

Java 中没有办法将 a 强制转换HashMap<String,Object>为 a List<Snap>。相反,您可以做的是查询数据库并获取所有对象Snap,然后将它们添加到List<Snap>.

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Snap snap = ds.getValue(Snap.class);
            snapList.add(snap);
        }
    }

    @Override
    public void onCancelled(DatabaseError error) {
        Log.d("TAG", error.getMessage()); //Never ignore potential errors!
    }
};
yourRef.addListenerForSingleValueEvent(eventListener);
Run Code Online (Sandbox Code Playgroud)