如何在处理日期和时间时修改领域结果数据?对我来说,提升和下降是不够的。
比方说,我得到的任务是在一小时内到期?
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,我想用它。
答案 0 :(得分:2)
时间限制 - 虽然在您在Task类中存储时间的字段中不清楚,但我会为长字段提供答案(如果不长,我建议你用它)。 Realm有一个很好的查询选择功能,我们可以使用它:
RealmResults <Task> tasksInOneHourList =
realm.where(Task.class).between("TIME_LONG_FIELD_NAME", CURRENT_TIME, CURRENT_TIME + HOUR_IN_MILLIS).findAll();
通知适配器 - 您可以按以下方式更新适配器数据:
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();