RealmResult处理时间限制

时间:2017-08-09 05:37:37

标签: android realm

如何在处理日期和时间时修改领域结果数据?对我来说,提升和下降是不够的。

比方说,我得到的任务是在一小时内到期?

 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 个答案:

答案 0 :(得分:2)

  1. 时间限制 - 虽然在您在Task类中存储时间的字段中不清楚,但我会为长字段提供答案(如果不长,我建议你用它)。 Realm有一个很好的查询选择功能,我们可以使用它:

    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();
        }
    });
    

答案 1 :(得分:2)

而不是

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

您可以执行类似

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