如何从Alamkanak Android-Week-View库中的SQlite数据库中获取所有事件?(我一直得到单个事件



我正在尝试从我的SQLite数据库中动态添加事件,但是我在周视图中得到了一个事件,这是我在数据库中添加的最后一个事件,我正在使用Alamkanak周视图,我遇到了问题并尝试了很多方法,请帮助大家。

mWeekView.setMonthChangeListener(new MonthLoader.MonthChangeListener() {
        @Override
        public List<? extends WeekViewEvent> onMonthChange(int newYear, int newMonth) {
            ArrayList<WeekViewEvent> lastevents = new ArrayList<WeekViewEvent>();
            lastevents = loadDateFromJson(newYear,newMonth);
               events.addAll(loadDateFromJson(newYear,newMonth));
                return events;
        }
    } );
}
 public ArrayList<WeekViewEvent> getmNewEvents(int year , int month ) {
    // Parse time.
    SimpleDateFormat sdf = new SimpleDateFormat("HH:MM");
    Date start = new Date();
    Date end = new Date();
    start = getMyTime();
    try {
        end = sdf.parse(new Event().getEndTime());
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Calendar now = Calendar.getInstance();
    Calendar startTime = (Calendar) now.clone();
    startTime.setTimeInMillis(start.getTime());
    startTime.set(Calendar.YEAR, now.get(Calendar.YEAR));
    startTime.set(Calendar.MONTH, now.get(Calendar.MONTH));
    startTime.set(Calendar.DAY_OF_MONTH, getMyDate());
    Calendar endTime = (Calendar) startTime.clone();
    endTime.add(Calendar.HOUR_OF_DAY, 3);

创建周视图事件。

    ArrayList<WeekViewEvent> ThisMonthsEvents = new   ArrayList<WeekViewEvent>();
    WeekViewEvent weekViewEvent =new WeekViewEvent(1,"Raouf",startTime,endTime);
    mNewEvents.add(weekViewEvent);
for (int i = 0; i < mNewEvents.size(); i++) {
        mNewEvents.get(i).getStartTime().get(Calendar.MONTH);
        if((mNewEvents.get(i).getStartTime().get(Calendar.MONTH) == month)&&(mNewEvents.get(i).getStartTime().get(Calendar.YEAR) == year))
            ThisMonthsEvents.add(mNewEvents.get(i));
}
ArrayList<WeekViewEvent> matchedEvents = new ArrayList<WeekViewEvent>();
        for (WeekViewEvent event : mNewEvents) {
            if (eventMatches(event, year, month)) {
                matchedEvents.add(event);
            }
        }
        mWeekView.notifyDatasetChanged();
    return ThisMonthsEvents;
}

在这里,我是如何从我的 SQlite 数据库中获取日期

public int getMyDate() {
    DBconexion db = new DBconexion(this);
    SQLiteDatabase db2 = db.getReadableDatabase();
    Cursor cur = db2.rawQuery("SELECT * FROM " + Table_name, null);
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-mm-yyyy");
    // looping through all rows and adding to list
    String date = null;
    Date Date = new Date();
    ArrayList<String> dateStringList = new ArrayList<String>();
    ArrayList<Date> dateList = new ArrayList<Date>();
    int DayOfMonth = 0;
    while (cur.moveToNext()) {
        dateStringList.add(cur.getString(9));
    }
        for (String dateString : dateStringList) {
            try {
                dateList.add(simpleDateFormat.parse(dateString));
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        for (Date datee : dateList) {
            DayOfMonth = datee.getDate();
        }
    return DayOfMonth;
}

我找到了解决这个问题的方法,我使用JSONArrays,它工作得很好这是代码,也许有人会需要它!

public  List<WeekViewEvent> loadDateFromJson(int year , int month) {
        DBconexion dBconexion = new DBconexion(this);
        @SuppressLint("SimpleDateFormat") SimpleDateFormat sdfD = new SimpleDateFormat("yy-MM-dd");
        @SuppressLint("SimpleDateFormat") SimpleDateFormat sdfT = new SimpleDateFormat("HH:mm");
        try {
            JSONObject jo = dBconexion.getDateTime();
            JSONArray Datejason = jo.getJSONArray("Date");
            JSONArray Timejason = jo.getJSONArray("Time");
            JSONArray endTimejason = jo.getJSONArray("End Time");
            JSONArray Namejason = jo.getJSONArray("Name");
            for (int i = 0; i < Datejason.length(); i++) {
                //set date
                String sd = (String) Datejason.get(i);
                Date dfj = sdfD.parse(sd);
                int Day = dfj.getDate();
                int Month = dfj.getMonth() - 0;
                int Year = dfj.getYear();
                //set time
                String st = (String) Timejason.get(i);
                Date tfj = sdfT.parse(st);
                int Hour = tfj.getHours();
                int Minute = tfj.getMinutes();
                String endTimeP = (String) endTimejason.getString(i);
                int endTimePeriod = Integer.valueOf(endTimeP);
                //set name
                String Name = (String) Namejason.getString(i);
                //Rand Colors for Events
                Random rand = new Random();
                int r = rand.nextInt(255);
                int g = rand.nextInt(255);
                int b = rand.nextInt(255);
                int randomColor = Color.rgb(r,g,b);
                if(Color.rgb(r,g,b) == getResources().getColor(R.color.white)){
                   randomColor = getResources().getColor(R.color.red);
                }
                //Set StarTime
                Calendar startTime = Calendar.getInstance();
                startTime.set(Calendar.HOUR_OF_DAY, Hour);
                startTime.set(Calendar.MINUTE, Minute);
                startTime.set(Calendar.YEAR, year);
                startTime.set(Calendar.MONTH, Month);
                startTime.set(Calendar.DAY_OF_MONTH, Day);
                Calendar endTime = (Calendar) startTime.clone();
                endTime.add(Calendar.HOUR_OF_DAY, endTimePeriod);
                WeekViewEvent weekViewEvent = new WeekViewEvent(1, Name, startTime, endTime);
                weekViewEvent.setColor(randomColor);
                myEvent.add(weekViewEvent);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
       return  myEvent;
    }

onMonthChange 将看起来像

 mWeekView.setMonthChangeListener(new MonthLoader.MonthChangeListener() {
        @Override
        public List<? extends WeekViewEvent> onMonthChange(int newYear, int newMonth) {
            List<WeekViewEvent> lastone = new ArrayList<WeekViewEvent> ();
            lastone = loadDateFromJson( newYear ,  newMonth);
             events.addAll(lastone);
            ArrayList<WeekViewEvent> matchedEvents = new ArrayList<WeekViewEvent>();
            for (WeekViewEvent event : events) {
                if (eventMatches(event, newYear, newMonth)) {
                    matchedEvents.add(event);
                }
            }
            return matchedEvents;
        }
    } );
}

最新更新