android - Firebase 数据未显示
问题描述
我已从 Firebase 检索到有关姓名和分数的数据。我能够看到检索到的数据的名字和分数的列表视图,但是对于检索到的第二个数据,我看不到任何分数或名称。当我调试应用程序时,我收到了这个“com.example.gymtastic.SquatScore(字段/设置器区分大小写!)”。
private ListView listView, listview2;
DatabaseReference databaseReference;
DatabaseReference ddatabase;
private FirebaseDatabase firebaseDatabase;
List<ScoreProfile> scoreList;
List<SquatScore> squatList;
@Override
protected void onStart() {
super.onStart();
ddatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot squatsnapshot : dataSnapshot.getChildren()){
SquatScore squatScore = squatsnapshot.getValue(SquatScore.class);
squatList.add(squatScore);
}
SquatInfoAddapter squatInfoAddapter =new SquatInfoAddapter(RankT.this, squatList);
listview2.setAdapter(squatInfoAddapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
}); // This one doesnt
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rank_t);
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference("Bench");
ddatabase = firebaseDatabase.getReference("Squat");
databaseReference.orderByChild("userScore").limitToFirst(5);
ddatabase.orderByChild("userScore").limitToFirst(5);
squatList = new ArrayList<>();
scoreList = new ArrayList<>();
firebaseAuth = FirebaseAuth.getInstance();
这是我的代码。显示第一个值侦听器,但对于创建的第二个值侦听器,它只显示空列表视图。
这是我正在检索但未显示的 Firebase 数据。
"Squat" : {
"Jn8SOKDgGRMewEHjVG8LaXoYtrl2" : {
"suserName" : "ace",
"suserScore" : "369"
},
"mooFelp2soMtDmRlg5IQ6AYpKhO2" : {
"suserName" : "ACe",
"suserScore" : "1222"
}
这是我的 SquatScore 课程:
public class SquatScore {
private String SuserName;
private String SuserScore;
public SquatScore(){};
public SquatScore(String suserName, String suserScore) {
SuserName = suserName;
SuserScore = suserScore;
}
public String getSuserName() {
return SuserName;
}
public String getSuserScore() {
return SuserScore;
}
}
解决方案
你得到的错误是:
W/ClassMapper:在类 com.example.gymtastic.SquatScore 上找不到 suserName 的设置器/字段(字段/设置器区分大小写!)“
如果我们看看你的课程是正确的:
- 没有字段
suserName
,只有SuserName
大写S
。 - 对于名为 的属性没有 setter 方法,该属性
userName
将被调用setSusername
。
没有这些,Firebase SDK 无法知道如何将suserName
JSON 中的属性值设置到您的SquatScore
对象上。
要解决此问题,您需要将该字段重命名为suserName
,或创建 setter 方法。