2013-04-18 102 views
0

我正在尝试制作一个应用程序,告诉我最新日历中的下一个会议是什么。 我所做的就是将光标放在最后一个事件上并开始获取他们的开始时间,直到我现在到达比当前时间更小的那个时间,然后使用上一个项目。 按顺序创建事件时工作正常,但如果我在两者之间创建事件,则工作正常。 下面是一个例子:Android日历与日历的问题

让我们将时间设置为13:00小时 我有在15:00之前添加的事件(事件1),16:00(事件2),17:00(事件3 ) 光标前往读取事件3的开始时间。 由于开始时间比现在大,因此它会进入前一个事件,即事件2 ,因为开始时间也更长,它会转到上一个事件1。 由于开始时间也较大,所以昨天进行了前一个活动。 由于开始时间较短,因此它会从事件1获得标识,标题和开始和结束时间。

这一切都正常,问题在于,当我在最初之后添加了一些东西,比如14:00(事件0)添加其他人首先,事件1,2和3 它不会得到事件0,它保留事件1的信息。

我怎样才能使它是正确的?

这里是我的代码

提前非常感谢

问候

public class CalendarInfo extends Activity { 
int idNumber = 0; 
private Cursor mCursor = null; 
private static final String[] COLS = new String[] 
{ CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART,  CalendarContract.Events.DTEND, CalendarContract.Events._ID}; 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
    setContentView(R.layout.calendar_info); 
Button buttonchange999 = (Button) findViewById(R.id.button999); 
     buttonchange999.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      mCursor = getContentResolver().query(
      CalendarContract.Events.CONTENT_URI, COLS, null, null, null); 
      mCursor.moveToLast(); 
      Calendar cal = Calendar.getInstance(); 
      long currentTimeStart = cal.getTimeInMillis(); 
      long ammountOfDayPassed = currentTimeStart/86400000; 
      String title = "N/A"; 
      Long start = 9223372036854775806L; 
      Long end = 0L; 
      int id = 0; 
      String title2 = "N/A"; 
      Long start2 = 9223372036854775806L; 
      Long end2 = 0L; 
      int id2 = 0; 
      while(start>currentTimeStart){ 
      try { 
      title = mCursor.getString(0); 
      start = mCursor.getLong(1); 
      end = mCursor.getLong(2); 
      id = mCursor.getInt(3); 
      } catch (Exception e) { 
      //ignore 
      } 
      if(start>currentTimeStart){ 
       title2 = title; 
       start2 = start; 
       end2 = end; 
       id2 = id; 
      } 
      mCursor.moveToPrevious(); 
      } 

      DateFormat formatter01 = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); 
      Calendar calendar01 = Calendar.getInstance(); 
      calendar01.setTimeInMillis(start2); 
      String startText = formatter01.format(calendar01.getTime()); 
      DateFormat formatter02 = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); 
      Calendar calendar02 = Calendar.getInstance(); 
      calendar02.setTimeInMillis(end2); 
      String endText = formatter02.format(calendar02.getTime()); 

      if(start2>currentTimeStart && end2>currentTimeStart){ 
      settingsTextView.setText("Meeting: "+title2+"\n"+"At: "+startText+"\n"+"Until: "+endText+"\n"+"ID: "+id2); 
      idNumber=id2; 
      } 
      else{ 
       settingsTextView.setText("No Next Meeting" + "\n" + "Meeting: "+title2+"\n"+"At: "+startText+"\n"+"Until: "+endText+"\n"+"ID: "+id2); 
       idNumber=id2; 
     } 
     } 
    }); 

}

回答

0

解决增加一个,如果在这一行:

if(start>currentTimeStart){ 
if(start<start2){ 
      title2 = title; 
      start2 = start; 
      end2 = end; 
      id2 = id; 
     } 
}