2017-11-16 18 views
0

私のアプリでMaterialCalendarView(https://github.com/prolificinteractive/material-calendarview)を使用しています。私の目的は価格表示を作成することです(画像に添付されています)。私は選択した日付&の価格を含む地図を持っています。MaterialCalendarView:デコレートメソッドでCalendarDay値を取得する方法は?

私はマップから価格値を得ることができるように、私は飾る方法で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) { 

//ここCalendarDayを取得する方法

int price = priceMap.get(); 

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

enter image description here

答えて

1

私はあなたがDayViewDecoratorの背後にある原則の一つ誤解していることが怖いです。

私が正しく理解していれば、何がやりたいことは日ごとにPriceSpan(日付の下に示し、すなわち小さなテキスト/値)の特定の値を設定することです。これは単一のDayViewDecoratorでは達成できません。 DayViewDecoratorは、該当する日付(priceMapお使いの場合)のセット内にあるすべての日のための一つの特定のスタイル/描画/何でも(decorate() -methodで定義)を適用します。

つまり、decorate()で起こることは、trueの前回の電話からshouldDecorate()に至ったすべての日に発生します。

私はあなたの地図の各一意の値に対して特定のデコレータを使用する必要があるとしていることを恐れています。

+0

はい、ロジックを変更しました。私は、価格が入手可能な毎日のためのデコレータを追加しました。その完璧な解決策ではないかもしれませんが、それは動作します。 –

関連する問題