我正在尝试从 firebase 的快照中设置对象的值。不知何故,它只设置了该对象 3 个值中的 1 个。
这是我的目标
public class StudentDataClass {
private String Name;
private String MSSV;
private String dataImage;
public String getName() {
return Name;
}
public String getMSSV() {
return MSSV;
}
public String getDataImage() {
return dataImage;
}
public StudentDataClass(String name,String mssv, String dataImage) {
this.Name = name;
this.MSSV = mssv;
this.dataImage = dataImage;
//this.dataImage = (dataImage == null || dataImage.isEmpty()) ? "default_url_or_empty" : dataImage;
}
public StudentDataClass(){
}
}
List<StudentDataClass> studentList;
studentList = new ArrayList<>();
这是数据库快照代码。
databaseReference = FirebaseDatabase.getInstance("https://android-app-eae36-default-rtdb.asia-southeast1.firebasedatabase.app").getReference("Students");
dialog.show();
eventListener = databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
studentList.clear();
for (DataSnapshot itemShapshot: snapshot.getChildren()){
StudentDataClass student = itemShapshot.getValue(StudentDataClass.class);
studentList.add(student);
}
myAdapter.notifyDataSetChanged();
dialog.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
dialog.dismiss();
}
});
对象获得了数据图像,但没有名称或 MSSV
这是我的数据库
为了能够将数据库中的属性值设置为 Java 类中的字段/属性,Firebase SDK 会查找与其名称和类型匹配的字段或 setter 方法。
由于
StudentDataClass
中没有 setter 方法,因此 SDK 将查看以下字段:Name
、MSSV
和 dataImage
。其中,只有 dataImage
的名称与数据库中的属性完全匹配 - 其他两个在数据库和代码之间具有不同的大小写。
您有几个选择:
setName
实际上匹配数据库属性 name
,并且 setMssv
匹配名为 mssv
的属性。PropertyName
注释 指定其映射到的属性名称。