Android Firebase DataSnapshot 投射到 Class

Android Firebase DataSnapshot Cast to Class

我有一个 Firebase 数据库。 当我从快照中获取价值时,我在下面有 HashMap:

我有一个 Snap class,如下所示。如何将 DataSnapshot 转换为 class 的列表,例如 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;
    }
}

Java 中无法将 HashMap<String,Object> 转换为 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);
        }
    }

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