Android日历处理星期几

时间:2015-09-02 21:45:34

标签: android calendar

我正在制作一个Android日历,我在这个网站上选择了这个教程:http://www.androidhub4you.com/2012/10/custom-calendar-in-android.html

我无法更改某些代码行, 三个问题:

  • 一:表示今天每天出现的颜色。我想只出现在当月。

  • 二:将周日和周一的颜色更改为红色。

  • 三:在周日和周一的日子里不允许点击

<小时/> 代码

第一和第二个问题:

    for (int i = 1; i <= daysInMonth; i++) {
        Log.d(currentMonthName, String.valueOf(i) + " " 
            + getMonthAsString(currentMonth) + " " + yy);

        if (i == getCurrentDayOfMonth()) {
            list.add(String.valueOf(i) + "-BLUE" + "-"
                + getMonthAsString(currentMonth) + "-" + yy);
        }
        //else if not working
        else if (i == Calendar.SUNDAY){
            list.add(String.valueOf(i) + "-RED" + "-"
                + getMonthAsString(currentMonth) + "-" + yy);
        } else {
            list.add(String.valueOf(i) + "-WHITE" + "-"
                + getMonthAsString(currentMonth) + "-" + yy);
        }
    }

问题三:

    Override
    public void onClick(View view) {

        // i cant implement the if statament for that :(

        String date_month_year = (String) view.getTag();

        Intent intent = new Intent(getBaseContext(), func_agenda.class);
          intent.putExtra("user_auth", "Paulo");
          intent.putExtra("user_date", date_month_year);
          startActivity(intent);
        try {
            Date parsedDate = dateFormatter.parse(date_month_year);
            Log.d(tag, "Parsed Date: " + parsedDate.toString());

        } catch (ParseException e) {

              e.printStackTrace();
        }



    }

1 个答案:

答案 0 :(得分:0)

问题1:

目前您正在检查当天的天数( i )是否与当月的当天天数( getCurrentDayOfMonth())相同,因此,对于例;今天9月2日当天的数量是2,不管月份。你必须对你的病情更加严格。你不仅要检查一天,还要检查你所在的月份。

您可能需要更改代码:

if (i == getCurrentDayOfMonth()) {

类似于:

if (i == getCurrentDayOfMonth() && mm == _calendar.get(Calendar.MONTH) ) { //Check if mm is from zero to 11. If not the condition should be mm-1 ==... 

<小时/> 问题2:

i的值将是1到30&amp; something(或某些情况下为28/29)。常量Calendar.SUNDAY的值为1.因此,在您的代码中,您询问i的当前值是否等于1.您必须查看当前月份的i的当前值是否显示是SUNDAY,怎么样?这篇文章可以解释你:how-to-determine-day-of-week-by-passing-specific-date

您可能需要更改代码:

else if (i == Calendar.SUNDAY){

类似于:

else if ( newMethodToGetDayOfWeek(i,mm,yy) == Calendar.SUNDAY){

<小时/> 问题3:

如果所选按钮是星期日或星期一,请点击日历当天后查看。在之前发布的代码中,您可以看到他们正在创建Date对象(parseDate)。您可以检查此日期是星期一/星期日,也可以根据该开始来确定活动..

从您的代码到:

Override
public void onClick(View view) {

    String date_month_year = (String) view.getTag();

    try {
        Date parsedDate = dateFormatter.parse(date_month_year);
        Log.d(tag, "Parsed Date: " + parsedDate.toString());

        if( anotherNewMethodToSeeIfTheDateIsSundayOrMonday( parsedDate ) == false )
        {
            Intent intent = new Intent(getBaseContext(), func_agenda.class);
            intent.putExtra("user_auth", "Paulo");
            intent.putExtra("user_date", date_month_year);
            startActivity(intent);
        } 
    } catch (ParseException e) {
          e.printStackTrace();
    }
}

其中 anotherNewMethodToSeeIfTheDateIsSundayOrMonday 应该是这样的:

private bool anotherNewMethodToSeeIfTheDateIsSundayOrMonday(Date date)
{
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int doWeek = cal.get(Calendar.DAY_OF_WEEK)
    if( doWeek == Calendar.SUNDAY || doWeek == Calendar.MONDAY )
    {
        return true;
    }

    return false;
}

来自here