114 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.datepicker;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.view.LayoutInflater;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import android.widget.AdapterView;
 | |
| import android.widget.LinearLayout;
 | |
| import android.widget.ListAdapter;
 | |
| import android.widget.TextView;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.recyclerview.widget.RecyclerView;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.datepicker.MaterialCalendar;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class MonthsPagerAdapter extends RecyclerView.Adapter<ViewHolder> {
 | |
|     private final CalendarConstraints calendarConstraints;
 | |
|     private final DateSelector<?> dateSelector;
 | |
|     private final DayViewDecorator dayViewDecorator;
 | |
|     private final int itemHeight;
 | |
|     private final MaterialCalendar.OnDayClickListener onDayClickListener;
 | |
| 
 | |
|     MonthsPagerAdapter(Context context, DateSelector<?> dateSelector, CalendarConstraints calendarConstraints, DayViewDecorator dayViewDecorator, MaterialCalendar.OnDayClickListener onDayClickListener) {
 | |
|         Month start = calendarConstraints.getStart();
 | |
|         Month end = calendarConstraints.getEnd();
 | |
|         Month openAt = calendarConstraints.getOpenAt();
 | |
|         if (start.compareTo(openAt) > 0) {
 | |
|             throw new IllegalArgumentException("firstPage cannot be after currentPage");
 | |
|         }
 | |
|         if (openAt.compareTo(end) > 0) {
 | |
|             throw new IllegalArgumentException("currentPage cannot be after lastPage");
 | |
|         }
 | |
|         this.itemHeight = (MonthAdapter.MAXIMUM_WEEKS * MaterialCalendar.getDayHeight(context)) + (MaterialDatePicker.isFullscreen(context) ? MaterialCalendar.getDayHeight(context) : 0);
 | |
|         this.calendarConstraints = calendarConstraints;
 | |
|         this.dateSelector = dateSelector;
 | |
|         this.dayViewDecorator = dayViewDecorator;
 | |
|         this.onDayClickListener = onDayClickListener;
 | |
|         setHasStableIds(true);
 | |
|     }
 | |
| 
 | |
|     public static class ViewHolder extends RecyclerView.ViewHolder {
 | |
|         final MaterialCalendarGridView monthGrid;
 | |
|         final TextView monthTitle;
 | |
| 
 | |
|         ViewHolder(LinearLayout linearLayout, boolean z) {
 | |
|             super(linearLayout);
 | |
|             TextView textView = (TextView) linearLayout.findViewById(R.id.month_title);
 | |
|             this.monthTitle = textView;
 | |
|             ViewCompat.setAccessibilityHeading(textView, true);
 | |
|             this.monthGrid = (MaterialCalendarGridView) linearLayout.findViewById(R.id.month_grid);
 | |
|             if (z) {
 | |
|                 return;
 | |
|             }
 | |
|             textView.setVisibility(8);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.recyclerview.widget.RecyclerView.Adapter
 | |
|     public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
 | |
|         LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.mtrl_calendar_month_labeled, viewGroup, false);
 | |
|         if (MaterialDatePicker.isFullscreen(viewGroup.getContext())) {
 | |
|             linearLayout.setLayoutParams(new RecyclerView.LayoutParams(-1, this.itemHeight));
 | |
|             return new ViewHolder(linearLayout, true);
 | |
|         }
 | |
|         return new ViewHolder(linearLayout, false);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.recyclerview.widget.RecyclerView.Adapter
 | |
|     public void onBindViewHolder(ViewHolder viewHolder, int i) {
 | |
|         Month monthsLater = this.calendarConstraints.getStart().monthsLater(i);
 | |
|         viewHolder.monthTitle.setText(monthsLater.getLongName());
 | |
|         final MaterialCalendarGridView materialCalendarGridView = (MaterialCalendarGridView) viewHolder.monthGrid.findViewById(R.id.month_grid);
 | |
|         if (materialCalendarGridView.getAdapter() != null && monthsLater.equals(materialCalendarGridView.getAdapter().month)) {
 | |
|             materialCalendarGridView.invalidate();
 | |
|             materialCalendarGridView.getAdapter().updateSelectedStates(materialCalendarGridView);
 | |
|         } else {
 | |
|             MonthAdapter monthAdapter = new MonthAdapter(monthsLater, this.dateSelector, this.calendarConstraints, this.dayViewDecorator);
 | |
|             materialCalendarGridView.setNumColumns(monthsLater.daysInWeek);
 | |
|             materialCalendarGridView.setAdapter((ListAdapter) monthAdapter);
 | |
|         }
 | |
|         materialCalendarGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { // from class: com.google.android.material.datepicker.MonthsPagerAdapter.1
 | |
|             @Override // android.widget.AdapterView.OnItemClickListener
 | |
|             public void onItemClick(AdapterView<?> adapterView, View view, int i2, long j) {
 | |
|                 if (materialCalendarGridView.getAdapter().withinMonth(i2)) {
 | |
|                     MonthsPagerAdapter.this.onDayClickListener.onDayClick(materialCalendarGridView.getAdapter().getItem(i2).longValue());
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.recyclerview.widget.RecyclerView.Adapter
 | |
|     public long getItemId(int i) {
 | |
|         return this.calendarConstraints.getStart().monthsLater(i).getStableId();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.recyclerview.widget.RecyclerView.Adapter
 | |
|     public int getItemCount() {
 | |
|         return this.calendarConstraints.getMonthSpan();
 | |
|     }
 | |
| 
 | |
|     CharSequence getPageTitle(int i) {
 | |
|         return getPageMonth(i).getLongName();
 | |
|     }
 | |
| 
 | |
|     Month getPageMonth(int i) {
 | |
|         return this.calendarConstraints.getStart().monthsLater(i);
 | |
|     }
 | |
| 
 | |
|     int getPosition(Month month) {
 | |
|         return this.calendarConstraints.getStart().monthsUntil(month);
 | |
|     }
 | |
| }
 |