0

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

让我们将时间设置为 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;
        }
        }
    });

}

4

1 回答 1

0

解决了在这一行中添加一个 if:

if(start>currentTimeStart){
if(start<start2){
            title2 = title;
            start2 = start;
            end2 = end;
            id2 = id;
        }
}
于 2013-04-19T16:34:13.880 回答