FileDocCategorySizeDatePackage
SimpleMonthAdapter.javaAPI DocAndroid 5.1 API6754Thu Mar 12 22:22:10 GMT 2015android.widget

SimpleMonthAdapter

public class SimpleMonthAdapter extends BaseAdapter
An adapter for a list of {@link android.widget.SimpleMonthView} items.

Fields Summary
private final Calendar
mMinDate
private final Calendar
mMaxDate
private final android.content.Context
mContext
private Calendar
mSelectedDay
private android.content.res.ColorStateList
mCalendarTextColors
private OnDaySelectedListener
mOnDaySelectedListener
private int
mFirstDayOfWeek
private final android.widget.SimpleMonthView.OnDayClickListener
mOnDayClickListener
Constructors Summary
public SimpleMonthAdapter(android.content.Context context)


       
        mContext = context;
    
Methods Summary
public intgetCount()

        final int diffYear = mMaxDate.get(Calendar.YEAR) - mMinDate.get(Calendar.YEAR);
        final int diffMonth = mMaxDate.get(Calendar.MONTH) - mMinDate.get(Calendar.MONTH);
        return diffMonth + 12 * diffYear + 1;
    
public intgetFirstDayOfWeek()

        return mFirstDayOfWeek;
    
public java.lang.ObjectgetItem(int position)

        return null;
    
public longgetItemId(int position)

        return position;
    
public android.view.ViewgetView(int position, android.view.View convertView, android.view.ViewGroup parent)

        final SimpleMonthView v;
        if (convertView != null) {
            v = (SimpleMonthView) convertView;
        } else {
            v = new SimpleMonthView(mContext);

            // Set up the new view
            final AbsListView.LayoutParams params = new AbsListView.LayoutParams(
                    AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.MATCH_PARENT);
            v.setLayoutParams(params);
            v.setClickable(true);
            v.setOnDayClickListener(mOnDayClickListener);

            if (mCalendarTextColors != null) {
                v.setTextColor(mCalendarTextColors);
            }
        }

        final int minMonth = mMinDate.get(Calendar.MONTH);
        final int minYear = mMinDate.get(Calendar.YEAR);
        final int currentMonth = position + minMonth;
        final int month = currentMonth % 12;
        final int year = currentMonth / 12 + minYear;
        final int selectedDay;
        if (isSelectedDayInMonth(year, month)) {
            selectedDay = mSelectedDay.get(Calendar.DAY_OF_MONTH);
        } else {
            selectedDay = -1;
        }

        // Invokes requestLayout() to ensure that the recycled view is set with the appropriate
        // height/number of weeks before being displayed.
        v.reuse();

        final int enabledDayRangeStart;
        if (minMonth == month && minYear == year) {
            enabledDayRangeStart = mMinDate.get(Calendar.DAY_OF_MONTH);
        } else {
            enabledDayRangeStart = 1;
        }

        final int enabledDayRangeEnd;
        if (mMaxDate.get(Calendar.MONTH) == month && mMaxDate.get(Calendar.YEAR) == year) {
            enabledDayRangeEnd = mMaxDate.get(Calendar.DAY_OF_MONTH);
        } else {
            enabledDayRangeEnd = 31;
        }

        v.setMonthParams(selectedDay, month, year, mFirstDayOfWeek,
                enabledDayRangeStart, enabledDayRangeEnd);
        v.invalidate();

        return v;
    
public booleanhasStableIds()

        return true;
    
private booleanisCalendarInRange(java.util.Calendar value)

        return value.compareTo(mMinDate) >= 0 && value.compareTo(mMaxDate) <= 0;
    
private booleanisSelectedDayInMonth(int year, int month)

        return mSelectedDay.get(Calendar.YEAR) == year && mSelectedDay.get(Calendar.MONTH) == month;
    
voidsetCalendarTextAppearance(int resId)
Sets the text color, size, style, hint color, and highlight color from the specified TextAppearance resource. This is mostly copied from {@link TextView#setTextAppearance(Context, int)}.

        final TypedArray a = mContext.obtainStyledAttributes(resId, R.styleable.TextAppearance);

        final ColorStateList textColor = a.getColorStateList(R.styleable.TextAppearance_textColor);
        if (textColor != null) {
            mCalendarTextColors = textColor;
        }

        // TODO: Support font size, etc.

        a.recycle();
    
voidsetCalendarTextColor(android.content.res.ColorStateList colors)

        mCalendarTextColors = colors;
    
public voidsetFirstDayOfWeek(int firstDayOfWeek)

        mFirstDayOfWeek = firstDayOfWeek;

        notifyDataSetInvalidated();
    
public voidsetOnDaySelectedListener(android.widget.SimpleMonthAdapter$OnDaySelectedListener listener)
Sets the listener to call when the user selects a day.

param
listener The listener to call.

        mOnDaySelectedListener = listener;
    
public voidsetRange(java.util.Calendar min, java.util.Calendar max)

        mMinDate.setTimeInMillis(min.getTimeInMillis());
        mMaxDate.setTimeInMillis(max.getTimeInMillis());

        notifyDataSetInvalidated();
    
public voidsetSelectedDay(java.util.Calendar day)
Updates the selected day and related parameters.

param
day The day to highlight

        mSelectedDay = day;

        notifyDataSetChanged();