android-如何设置日历视图中突出显示的选定日期,来自Firebase数据库的数据
我一直在用firebase数据库开发一个应用程序。在我的应用程序中,我必须使用日历视图,其中必须使用firebase数据库中的数据突出显示选定的日期 需要突出显示存储在上述节点中的日期。我的日期格式为DD/MM/YYYYandroid-如何设置日历视图中突出显示的选定日期,来自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
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,当用户点击禁止日期时,你只需取消选择该日期。伙计。。。为了使所选日期可单击,当单击日期时,我再次从数据库检索数据快照,并检查所选日期是否在数据库中。。。这给了我完美的结果。。。谢谢你,伙计。。。