2017-01-03 95 views
2

我有一个带今日日期的textview,当onclick将文本视图设置为next或prev date时,有两个按钮。现在,如果textview显示当前日期,我想禁用上一个按钮。也就是说,如果今天的日期是1/3,用户可以去1/4和之后,并在未来的日期之间切换。但用户在当前日期之前不能进入1/2或任何日期。如何在当前日期之前禁用先前日期的按钮? Android

 tvShowDate = (TextView) findViewById(R.id.tvShowDate); 

    long date = System.currentTimeMillis(); 

    final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMMdd"); 
    String dateString = sdf.format(date); 
    tvShowDate.setText(dateString); 


    ivPrevDate = (ImageView) findViewById(R.id.ivPrevDate); 
    ivNextDate = (ImageView) findViewById(R.id.ivNextDate); 


    final Calendar c = Calendar.getInstance(); 
    final String[] formattedDate = {sdf.format(c.getTime())}; 

    ivPrevDate.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      c.add(Calendar.DATE, -1); 
      formattedDate[0] = sdf.format(c.getTime()); 

      Log.v("PREVIOUS DATE : ", formattedDate[0]); 
      tvShowDate.setText(formattedDate[0]); 
     } 
    }); 


    ivNextDate.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      c.add(Calendar.DATE, 1); 
      formattedDate[0] = sdf.format(c.getTime()); 

      Log.v("NEXT DATE : ", formattedDate[0]); 
      tvShowDate.setText(formattedDate[0]); 

     } 
    }); 

回答

1

试试这个功能:

public boolean Check_valid_date(CharSequence d) { 
    SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy"); 
    Date date_new = null; 
    try { 
     date_new = sdf.parse(d.toString()); 
     Date current_date = new Date(); 
     current_date = removeTime(current_date); 
     Log.d("CurentDate", current_date.toString()); 
     Log.d("NEW date", date_new.toString()); 
     if (current_date.equals(date_new)) { 
      return true; 
     } 
     return current_date.before(date_new); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 

public Date removeTime(Date date) { 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 
    cal.set(Calendar.HOUR_OF_DAY, 0); 
    cal.set(Calendar.MINUTE, 0); 
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 
    return cal.getTime(); 
} 

使用它作为:

Calendar calendar = Calendar.getInstance(); 
calendar.set(year, month, day); 
CharSequence date = DateFormat.format("dd MMMM yyyy", calendar.getTime()); 
//pass your selected date.. 
boolean check = Check_valid_date(date); 


if(check){ 
    //date is after current date 
    } 
else{ 
    //date is before current date 
    //disable button 
    } 
+0

谢谢您的回答 – JerryKo

0

为此在codition

myButton.setEnabled(false)