Java 周一开始日历

Java 周一开始日历,java,android,date,calendar,Java,Android,Date,Calendar,我在本教程的帮助下制作了日历: 但是这个日历从星期天开始,我想从星期一开始。。 我试图改变价值观​​在函数集中设置对象GregorianCalendar,但它不会给出所需的结果。本周从周一开始,但在某些月份,第一周就失去了。 我发现了一个类似的问题: 但没有解决办法。如果有人有任何想法,请帮忙 CalendarView.java CalendarAdapter.java 解决方案: 在CalendarAdapter.java中: 更改为: month.set(GregorianCalendar.

我在本教程的帮助下制作了日历: 但是这个日历从星期天开始,我想从星期一开始。。 我试图改变价值观​​在函数集中设置对象GregorianCalendar,但它不会给出所需的结果。本周从周一开始,但在某些月份,第一周就失去了。 我发现了一个类似的问题: 但没有解决办法。如果有人有任何想法,请帮忙

CalendarView.java

CalendarAdapter.java

解决方案:

在CalendarAdapter.java中:

更改为:

month.set(GregorianCalendar.DAY_OF_MONTH, 1);

在方法setPreviousMonth和setNextMonth中的CalendarView.java中:

发件人:

致:


首先将片段和适配器中的所有Locale.US都更改为Locale.UK 因为美国日历从周日开始,英国日历从周一开始

在CalendarViewFragment中从星期一开始启动日历

设置下一个月的更改

month.getActualMinimumGregorianCalendar.month,1; 到 month.getActualMinimumGregorianCalendar.month,Calendar.SATURDAY

上个月的变化

month.getActualMaximumGregorianCalendar.month,1; 到 month.getActualMaximumGregorianCalendar.month,Calendar.SATURDAY

而在日历适配器中

第1个月的第1个月的第1个月; 到
month.setgregorianalendar.DAY\u OF_month,Calendar.SATURDAY

看到这个:@DerGolem谢谢,但没有帮助:嗯。。。我将所有语言环境设置为Locale.dermany。和month.setgregorianalendar.DAY_OF u month,Calendar.星期六;它起作用了!但是为什么呢@DerGolem如果我写:month.setgregorianalendar.DAY\u OF u WEEK,Calendar.MONDAY;不起作用。不,我的选择不合适,2015年11月,本周从周日开始:
private Context mContext;
private java.util.Calendar month;
public GregorianCalendar pmonth; // Istanzia un calendario per il mese precedente
/**
 * calendar instance for previous month for getting complete view
 */
public GregorianCalendar pmonthmaxset;
private GregorianCalendar selectedDate;
int firstDay;
int maxWeeknumber;
int maxP;
int calMaxP;
int lastWeekDay;
int leftDays;
int mnthlength;
String itemvalue, curentDateString;
DateFormat df;

private ArrayList<String> items;
public static List<String> dayString;
private View previousView;

public CalendarAdapter(Context c, GregorianCalendar monthCalendar) {
    CalendarAdapter.dayString = new ArrayList<String>();
     Locale.setDefault( Locale.US );
    month = monthCalendar;
    selectedDate = (GregorianCalendar) monthCalendar.clone();
    mContext = c;
    month.set(GregorianCalendar.DAY_OF_MONTH, 1);
    this.items = new ArrayList<String>();
    df = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
    curentDateString = df.format(selectedDate.getTime());
    refreshDays();
}

public void setItems(ArrayList<String> items) {
    for (int i = 0; i != items.size(); i++) {
        if (items.get(i).length() == 1) {
            items.set(i, "0" + items.get(i));
        }
    }
    this.items = items;
}

public int getCount() {
    return dayString.size();
}

public Object getItem(int position) {
    return dayString.get(position);
}

public long getItemId(int position) {
    return 0;
}

// create a new view for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    TextView dayView;
    if (convertView == null) { // if it's not recycled, initialize some
                                // attributes
        LayoutInflater vi = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.calendar_item, null);

    }
    dayView = (TextView) v.findViewById(R.id.date);
    // separates daystring into parts.
    String[] separatedTime = dayString.get(position).split("-");
    // taking last part of date. ie; 2 from 2012-12-02
    String gridvalue = separatedTime[2].replaceFirst("^0*", "");
    // checking whether the day is in current month or not.
    if ((Integer.parseInt(gridvalue) > 1) && (position < firstDay)) {
        // setting offdays to white color.
        dayView.setTextColor(Color.WHITE);
        dayView.setClickable(false);
        dayView.setFocusable(false);
    } else if ((Integer.parseInt(gridvalue) < 7) && (position > 28)) {
        dayView.setTextColor(Color.WHITE);
        dayView.setClickable(false);
        dayView.setFocusable(false);
    } else {
        // setting curent month's days in blue color.
        dayView.setTextColor(Color.BLUE);
    }

    if (dayString.get(position).equals(curentDateString)) {
        setSelected(v);
        previousView = v;
    } else {
        v.setBackgroundResource(R.drawable.list_item_background);
    }
    dayView.setText(gridvalue);

    // create date string for comparison
    String date = dayString.get(position);

    if (date.length() == 1) {
        date = "0" + date;
    }
    String monthStr = "" + (month.get(GregorianCalendar.MONTH) + 1);
    if (monthStr.length() == 1) {
        monthStr = "0" + monthStr;
    }

    // show icon if date is not empty and it exists in the items array
    ImageView iw = (ImageView) v.findViewById(R.id.date_icon);
    if (date.length() > 0 && items != null && items.contains(date)) {
        iw.setVisibility(View.VISIBLE);
    } else {
        iw.setVisibility(View.INVISIBLE);
    }
    return v;
}

public View setSelected(View view) {
    if (previousView != null) {
        previousView.setBackgroundResource(R.drawable.list_item_background);
    }
    previousView = view;
    view.setBackgroundResource(R.drawable.calendar_cel_selectl);
    return view;
}

public void refreshDays() {
    // clear items
    items.clear();
    dayString.clear();
    Locale.setDefault( Locale.ITALY );
    pmonth = (GregorianCalendar) month.clone();
    // month start day. ie; sun, mon, etc
    firstDay = month.get(GregorianCalendar.DAY_OF_WEEK);
    // finding number of weeks in current month.
    maxWeeknumber = month.getActualMaximum(GregorianCalendar.WEEK_OF_MONTH);
    // allocating maximum row number for the gridview.
    mnthlength = maxWeeknumber * 7;
    maxP = getMaxP(); // previous month maximum day 31,30....
    calMaxP = maxP - (firstDay - 1);// calendar offday starting 24,25 ...
    /**
     * Calendar instance for getting a complete gridview including the three
     * month's (previous,current,next) dates.
     */
    pmonthmaxset = (GregorianCalendar) pmonth.clone();
    /**
     * setting the start date as previous month's required date.
     */
    pmonthmaxset.set(GregorianCalendar.DAY_OF_MONTH, calMaxP +1);

    /**
     * filling calendar gridview.
     */
    for (int n = 0; n < mnthlength; n++) {

        itemvalue = df.format(pmonthmaxset.getTime());
        pmonthmaxset.add(GregorianCalendar.DATE, 1);
        dayString.add(itemvalue);

    }
}

private int getMaxP() {
    int maxP;
    if (month.get(GregorianCalendar.MONTH) == month
            .getActualMinimum(GregorianCalendar.MONTH)) {
        pmonth.set((month.get(GregorianCalendar.YEAR) - 1),
                month.getActualMaximum(GregorianCalendar.MONTH), 1);
    } else {
        pmonth.set(GregorianCalendar.MONTH,
                month.get(GregorianCalendar.MONTH) - 1);
    }
    maxP = pmonth.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);

    return maxP;
}
}
month.set(GregorianCalendar.DAY_OF_MONTH, 1);
month.set(GregorianCalendar.DAY_OF_MONTH, Calendar.SATURDAY);
month.getActualMaximum(GregorianCalendar.MONTH), 1);
month.getActualMinimum(GregorianCalendar.MONTH), 1);
month.getActualMaximum(GregorianCalendar.MONTH), Calendar.SATURDAY);
month.getActualMinimum(GregorianCalendar.MONTH), Calendar.SATURDAY);