0

加载我的数据后,我会在交付之前对其进行排序。

工作完美,除非我在 API < 9 设备上。在那里,什么也没有发生。

有人有正当理由吗?任何解决方法?

CollectionUtils.FINISH_TIME 是我使用的比较器,它看起来像这样:

@Override
    public int compare(Workout lhs, Workout rhs) {
        return (int) (lhs.finishTime - rhs.finishTime);
    }

编辑:执行排序的片段。这是在 Loaders loadInBack 里面

try {
        final String json = DataHandler.read(getContext(), DataFiles.LOGGED_WORKOUTS);
        if (!TextUtils.isEmpty(json)) {
            final ArrayList<Workout> workouts = Lists.newArrayList(new Gson().fromJson(json,
                    Workout[].class));
                            Collections.sort(workouts, CollectionUtils.FINISH_TIME);
            return workouts;
        }
    } catch (IOException e) {
        Utils.logExceptionAndReport(TAG, e);
    }
    return Lists.newArrayList();
}
4

1 回答 1

0

好的,我现在已经开始工作了。

由于完成时间总是 System.currentTimeMillis() 之前设置的,因此这些数字通常很大,并且在比较时它们会产生很大的正数或负数。

我对其进行了更改,以便比较 if(rhs.finishTime > lhs.finishTime) return 1 等。

我仍然不明白为什么这适用于较新的手机,也许是我的数据从一开始就总是插入 0 并且排序从未奏效。谁知道,它现在正在工作,这才是最重要的。

于 2013-11-12T11:12:11.630 回答