2016-08-20 75 views
0

首先,我使用的库https://github.com/alamkanak/Android-Week-View每周的A​​ndroid周查看加载事件异步

我有一个API,同时将数据返回一个星期。

例如GET /东西/ {current_week_number}

然后滚动听众设置一个检查是否周已经改变,然后将加载

GET /东西/ {new_week_number}

问题在于所有事件都会在当周的位置上重复。我知道图书馆每个月都需要活动,这是问题吗?

一直在调试这一天现在,帮助将不胜感激。

函数用于创建事件:

private WeekViewEvent createNew(JSONObject json, int week) { 
     String eventTitle = ""; 
     String colorString = "#999"; 
     String startTimeString = ""; 
     String endTimeString = ""; 
     int dayOfWeek = 0; 

     try { 
      eventTitle = json.getString("text").replaceAll("\n", " "); 
      colorString = json.getString("color"); 
      startTimeString = json.getString("startTime"); 
      endTimeString = json.getString("endTime"); 
      dayOfWeek = json.getInt("day"); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     Calendar startTime = Calendar.getInstance(); 
     startTime.set(Calendar.HOUR_OF_DAY, hoursFromString(startTimeString)); 
     startTime.set(Calendar.MINUTE, minutesFromString(startTimeString)); 
     startTime.set(Calendar.WEEK_OF_YEAR, week); 
     startTime.set(Calendar.DAY_OF_WEEK, dayOfWeek); 

     Calendar endTime = (Calendar) startTime.clone(); 
     endTime.set(Calendar.HOUR_OF_DAY, hoursFromString(endTimeString)); 
     endTime.set(Calendar.MINUTE, minutesFromString(endTimeString)); 

     WeekViewEvent event = new WeekViewEvent(mGlobalCounter, eventTitle, startTimeString + " - " + endTimeString, startTime, endTime); 
     event.setColor(Color.parseColor(colorString)); 

     if (event.getColor() == Color.WHITE) { 
      event.setColor(R.color.event_color_01); 
     } 
     return event; 
    } 

月变化监听器+辅助方法(从例子)

private boolean eventMatches(WeekViewEvent event, int year, int month) { 
     return (event.getStartTime().get(Calendar.YEAR) == year && event.getStartTime().get(Calendar.MONTH) == month - 1) || (event.getEndTime().get(Calendar.YEAR) == year && event.getEndTime().get(Calendar.MONTH) == month - 1); 
    } 

MonthLoader.MonthChangeListener mMonthChangeListener = new MonthLoader.MonthChangeListener() { 
    @Override 
    public List<WeekViewEvent> onMonthChange(int newYear, int newMonth) { 
     // Populate the week view with some events. 
     List<WeekViewEvent> events = new ArrayList<>(); //getEvents(newYear, newMonth); 


      for (WeekViewEvent event : mNewEvents) { 
       if (eventMatches(event, newYear, newMonth)) { 
        events.add(event); 
       } 
      } 

      mFetchedWeeks.add(Integer.valueOf(mWeek)); 

     return events; 
    } 
}; 

,这里是从API https://gist.github.com/jonathanort/668de267966e3b673fffe23dfbdfb90b

另外,JSON响应,我修改后的WeekView.java版本 https://gist.github.com/jonathanort/472d86355dcdbc338f13373a838f548a

回答

0

解决的办法是添加行

startTime.get(Calendar.DAY_OF_WEEK); 

startTime.set(Calendar.DAY_OF_WEEK, dayOfWeek); 

显然,它不会将一天否则