2016-08-20 44 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); 

顯然,它不會將一天否則