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

时间:2018-02-04 15:22:56

标签: android firebase-realtime-database calendar

我一直在使用firebase数据库开发应用程序。在我的应用程序中,我必须使用calenderView,其中必须使用firebase数据库中的数据突出显示所选日期。enter image description here

需要突出显示上述节点中存储的日期。我的日期格式为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) {

                }
            });

1 个答案:

答案 0 :(得分:1)

您不能在日历视图中选择一天以上。 您需要库或自定义组件。我推荐的图书馆是MaterialCalendarView

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

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

然后,您可以使用库setDateSelected(Date 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) {

            }
        });