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