Android Firebase DataSnapshot Cast to Class

时间:2018-02-16 11:54:39

标签: android class firebase firebase-realtime-database snapshot

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

HashMap from the snap

我有一个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;
    }
}

1 个答案:

答案 0 :(得分:2)

在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);