MaterialCalendarView:如何在装饰方法上获取 CalendarDay 值?

MaterialCalendarView: How to get CalendarDay value on decorate method?

我在我的应用程序中使用 MaterialCalendarView (https://github.com/prolificinteractive/material-calendarview),我的 objective 创建价格视图(如图所示)。我有一张包含选定日期及其价格的地图。

请帮助我了解如何在装饰方法中获取 CalendarDay 值,以便我可以从地图中获取价格值。

 public class DaysDecorator implements DayViewDecorator {
 private final Context context;
 Map<CalendarDay, String> priceMap;

public DaysDecorator(Context context, Map<CalendarDay, String> priceMap){
    this.context = context;
    this.priceMap = priceMap;
}
@Override
public boolean shouldDecorate(CalendarDay day) {
    return priceMap.containsKey(day);
}

 @Override
 public void decorate(DayViewFacade view) {

//How to get CalendarDay here

    int price = priceMap.get();

    view.addSpan(new PriceSpan(35, Color.LTGRAY, 120000));
  }
}

恐怕您误解了 DayViewDecorator 背后的原理之一。

如果我没理解错的话,您要做的是为每一天的 PriceSpan(即日期下方显示的小 text/value)设置一个特定值。这无法通过单个 DayViewDecorator 来实现。 DayViewDecorator 对适用日期集中的所有日期(在您的情况下 priceMap)应用一个特定的 style/drawing/whatever(通过 decorate() 方法定义)。

换句话说,在 decorate() 中发生的事情发生在所有那些导致 true 之前调用 shouldDecorate() 的日子里。

恐怕您将不得不为地图中的每个唯一值使用特定的装饰器。