[英]How to get all the dates from Firebase and mark the dates in Calendar
在“Users Mood”父級的用戶 ID 下,每個鍵都有多個日期存儲。
"Users Mood" : {
"K2ngvpioRUYF4bRM07Da5cbAjE53" : { //This is user ID
"-M3jNjCuGdMCwt1Czpwz" : { //This is key
"Date" : "2020-3-30",
"Scale" : "3"
},
"-M3jQWxm7z0EQYgkVenX" : { //This is key
"Date" : "2020-3-29",
"Scale" : "4"
},
"-M5hxn-rCJICUvRcMZJu" : { //This is key
"Date" : "2020-4-24",
"Scale" : "2"
}
}
}
所有日期(2020-3-30、2020-3-29、2020-4-24)都應該在日歷上標出。 我使用了來自https://github.com/Applandeo/Material-Calendar-View的第三方日歷
以下是我想出的方法,但是日歷中沒有標記存儲日期。
userMoodRef=FirebaseDatabase.getInstance().getReference().child("Users Mood").child(user.getUid());
CalendarView calendarView = (CalendarView) findViewById(R.id.calendar);
List<EventDay> events = new ArrayList<>();
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Calendar calendar = Calendar.getInstance();
ArrayList<String> dates= new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String date=ds.child("Date").getValue(String.class);
dates.add(date);
}
for(String date : dates){
String[] items1 = date.split("-");
int year= Integer.parseInt(items1[0]);
int month=Integer.parseInt(items1[1]);
int day=Integer.parseInt(items1[2]);
calendar.set(year,month,day);
events.add(new EventDay(calendar, R.drawable.ic_dot_blue_24dp));
calendarView.setEvents(events);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
userMoodRef.addListenerForSingleValueEvent(eventListener);
請指導我解決這個問題。 謝謝你。
for(String date : dates){
Calendar calendar = Calendar.getInstance(); // calendar must be here
String[] items1 = date.split("-");
int year= Integer.parseInt(items1[0]);
int month=Integer.parseInt(items1[1]);
int day=Integer.parseInt(items1[2]);
calendar.set(year,month,day);
events.add(new EventDay(calendar, R.drawable.ic_dot_blue_24dp));
}
calendarView.setEvents(events);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.