我正在尝试制作一个应用程序,告诉我日历中的下一次会议是什么。我所做的是将光标放在最后一个事件上并开始获取他们的开始时间,直到我到达比现在更小的那个,然后,只需使用上一个项目。按顺序创建事件时它可以正常工作,但如果我在两者之间创建事件则不行。这是一个例子:
让我们将时间设置为 13:00 小时 我在 15:00(事件 1)、16:00(事件 2)、17:00(事件 3)之前添加了事件 光标转到读取事件的开始时间3. 由于开始时间比现在大,所以转到前一个,事件2 因为开始时间也较大,所以转到前一个,事件1。由于开始时间也较大,所以转到前一个,一些昨天的活动。由于 start 较小,它从事件 1 中获取 id、title 以及开始和结束时间。
一切正常,问题是,当我在最初添加其他事件 1、2 和 3 之后在 14:00(事件 0)添加一些内容时,它不会到达事件 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;
}
}
});
}