0

データをロードしたら、配信する前にソートします。

API < 9 デバイスを使用していない限り、完璧に動作します。そこでは、何も起こりません。

誰にもこれに正当な理由がありますか?回避策はありますか?

CollectionUtils.FINISH_TIME は、使用しているコンパレータであり、次のようになります。

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

編集:ソートが実行されるスニペット。これはローダーの 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 に答える