我一直在使用firebase数据库开发应用程序。在我的应用程序中,我必须使用calenderView,其中必须使用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) {
}
});
答案 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) {
}
});