我需要将数据从Firebase返回到Java对象,但是即使使用接口,它也总是返回null。有帮助吗?
我在方法内部创建了一个“坐标”对象,并试图像这样访问数据:readData(value -> coordinates = value , offer);
public interface CoordinatesCallback {
void onCallBack(Coordinates value);
}
public void readData(CoordinatesCallback callback, Offer offer) {
String storeId = Integer.toString(offer.getStore().getId());
mDatabase.child("stores").child(storeId).child("coordinates").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Coordinates coordinates = dataSnapshot.getValue(Coordinates.class);
callback.onCallBack(coordinates);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
答案 0 :(得分:1)
getValue()的工作方式不是这样。您必须为您要读取的数据库的每个字段传递带有getter和setter的Java POJO的Class对象。从链接的Javadoc中:
此方法用于编组此快照中包含的数据 进入您选择的课程。该课程必须适合2个简单 约束:
- 该类必须具有不带参数的默认构造函数
- 该类必须为要分配的属性定义公共获取方法。没有公共获取者的属性将设置为 实例反序列化时的默认值