我正在为会员出席应记录的俱乐部开发应用程序。我无法在列表视图中正确获取它。正确获取Firebase数据
这里是数据库的一部分:
可能有不止一个运动参加像空手道或游泳某一天。我想在列表视图中获取该成员的出席人数。我会尽量在一天之后对其进行分区,但现在我需要正确地获取数据。 这里是我做出的模型:
public class MemberAttendance {
private String day;
private HashMap<String, Object> attendedSport;
public MemberAttendance() {
}
public MemberAttendance(String day, HashMap<String, Object> attendedSport) {
this.day = day;
this.attendedSport = attendedSport;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public HashMap<String, Object> getAttendedSport() {
return attendedSport;
}
public void setAttendedSport(HashMap<String, Object> attendedSport) {
this.attendedSport = attendedSport;
}
}
这里是适配器:
public class MemberAttendanceAdapter extends FirebaseListAdapter<MemberAttendance> {
public MemberAttendanceAdapter(Activity activity, Class<MemberAttendance> modelClass, int modelLayout, Query ref) {
super(activity, modelClass, modelLayout, ref);
}
@Override
protected void populateView(View view, MemberAttendance memberAttendance, int i) {
// Get values from firebase database
String day = memberAttendance.getDay();
HashMap<String, Object> hashMap = memberAttendance.getAttendedSport();
String sport = (String) hashMap.get("attended");
String date = (String) hashMap.get("timestamp");
// Create views and assign values
TextView dayTxtView = (TextView) view.findViewById(R.id.dayTxtView);
dayTxtView.setText(day);
TextView sportTxtView = (TextView) view.findViewById(R.id.sportTxtView);
sportTxtView.setText(sport);
TextView dateTxtView = (TextView) view.findViewById(R.id.dateTxtView);
dateTxtView.setText(date);
}
}
在这里,我怎么尝试设置适配器:
final FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference attendanceRef = database.getReference()
.child(Constants.MEMBERS_NODE).child(userID).child("attendance");
attendanceAdapter = new MemberAttendanceAdapter(getActivity(), MemberAttendance.class,
R.layout.attendance_list_item, attendanceRef);
attendanceListView.setAdapter(attendanceAdapter);
到目前为止,没有工作,并就使用HashMap.get(..)对象引用空指针异常
String sport = (String) hashMap.get("attended");
任何帮助表示赞赏。
的getAttendedSport HashMap试图获得一个名为“attendSport”的节点,但没有名为“attendSport”的节点,而只是看起来像一个随机ID。 – Linxy