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