android 如何从Firebase获取所有日期并在日历中标记日期

pb3s4cty  于 2023-04-04  发布在  Android
关注(0)|答案(2)|浏览(113)

我有多个日期存储与每个键,在用户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);

请指导我解决这个问题。谢谢。

pw9qyyiw

pw9qyyiw1#

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);

f2uvfpb9

f2uvfpb92#

日历日历= Calendar.getInstance();在循环calendarView.setEvents(events)中调用此行;在for循环之外调用它。

相关问题