android-如何设置日历视图中突出显示的选定日期,来自Firebase数据库的数据

android-如何设置日历视图中突出显示的选定日期,来自Firebase数据库的数据,android,firebase-realtime-database,calendar,Android,Firebase Realtime Database,Calendar,我一直在用firebase数据库开发一个应用程序。在我的应用程序中,我必须使用日历视图,其中必须使用firebase数据库中的数据突出显示选定的日期 需要突出显示存储在上述节点中的日期。我的日期格式为DD/MM/YYYY CalenderView calendarView = view.findViewById(R.id.calenderView); nodes.getNodeDailyList().child("dateList").addValueEventLis

我一直在用firebase数据库开发一个应用程序。在我的应用程序中,我必须使用日历视图,其中必须使用firebase数据库中的数据突出显示选定的日期

需要突出显示存储在上述节点中的日期。我的日期格式为DD/MM/YYYY

 CalenderView calendarView = view.findViewById(R.id.calenderView);

            nodes.getNodeDailyList().child("dateList").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                       String date = dataSnapshot.getValue(String.class).replace(",","/");
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

在日历视图中不能选择多个日期。 您需要一个库或自定义组件。我推荐一个图书馆

在库中,可以使用以下方法从字符串解析日期:

public Date getDate(String date){

    String dateArray[] = date.split("/");

    int day = Integer.parseInt(dateArray[0]);
    int month = Integer.parseInt(dateArray[1]);
    int year = Integer.parseInt(dateArray[2]);

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, day);
    calendar.set(Calendar.MONTH, month);
    calendar.set(Calendar.YEAR, year);


    long time = calendar.getTimeInMillis();

    return new Date(time);
}
然后,您可以使用库setDateSelectedDate date,boolean selected方法来选择日期

最后,如果您的节点有多个日期,那么您的代码现在的状态将出现问题。您需要做的是:

nodes.getNodeDailyList().child("dateList").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot snapshot:dataSnapshot.getChildren()) {
                    String date = snapshot.getValue(String.class).replace(",","/");

                    //do something with date
                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

完美的家伙。。。如何禁用未选择的日期?禁用是什么意思?使它们不可点击?你不能,除非你破解库:/n你能做的是使用OnDateSelectedListener,当用户点击禁止日期时,你只需取消选择该日期。伙计。。。为了使所选日期可单击,当单击日期时,我再次从数据库检索数据快照,并检查所选日期是否在数据库中。。。这给了我完美的结果。。。谢谢你,伙计。。。