日历的Android游标问题

时间:2013-04-18 15:54:07

标签: android calendar cursor

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

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

}

1 个答案:

答案 0 :(得分:0)

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

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