2017-08-09 58 views
1

如何在處理日期和時間時修改領域結果數據?升序和降級對我來說還不夠。RealmResult處理時間限制

說例如我得到的任務是在一小時內到期?

RealmResults<Task> tmp = realm.where(Task.class).findAll(); 
for (final Task task : tmp) { 
      String dateFormat = Utility.TIMEFORMAT; 
      String current = "2:30:00 PM"; 
      Date currentTime = new Date(task.gettime()); 
      //currentTime = new SimpleDateFormat(dateFormat).parse(current); 
        if(isIncomingWithInHour(currentTime, calendar)){ 
         realmresult.add(tmp) /// this result in error. 
        } 
     } 

正如你所看到的,ASCENDING和DESCENDING在這種排序中不起作用。無論如何要將reamlResult返回到適配器? Realmresult有一個onchangeListener,我想用它。

回答

2

而不是

RealmResults<Task> tmp = realm.where(Task.class).findAll(); 

你可以做點像

RealmResults<Task> tasksInOneHour = realm.where(Task.class) 
             .greaterThanOrEqualTo("time", startTime) 
             .lowerThan("time", endTime) 
             .findAll(); 
+0

這似乎工作。謝謝 – thenewbie

2
  1. 時間限制 - 雖然它不是在現場,其中輸入你存儲在你的任務的上課時間,我會提供一個長字段答案(和明確的,如果它不長,我建議你用它)。境界有一個很好的查詢選擇能力,這是我們可以做一個使用:

    RealmResults <Task> tasksInOneHourList = 
    realm.where(Task.class).between("TIME_LONG_FIELD_NAME", CURRENT_TIME, CURRENT_TIME + HOUR_IN_MILLIS).findAll(); 
    
  2. 通知適配器 - 你可以更新適配器數據如下:

    tasksInOneHourList.addChangeListener(new RealmChangeListener<RealmResults<Task>>() { 
        @Override 
        public void onChange(RealmResults<Task> tasks) { 
         adapter.notifyDataSetChanged(); 
        } 
    });