2017-08-09 59 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(); 
        } 
    });