gpt4 book ai didi

android - 使用比较器排序不起作用

转载 作者:行者123 更新时间:2023-11-29 17:32:03 26 4
gpt4 key购买 nike

我必须按照以下格式存储和管理卷列表:“100毫升”、“200毫升”、“300毫升”……

每次列表更改时,我都使用带有 JSON 的 SharedPreferences 来存储它。

我希望列表是有序的,所以 100 < 1000,但它在 300 之前显示为 1000 和 2000。

这是我的比较器:

mVolumeComparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {

int volume1 = Integer.parseInt(s1.replace(" ml", ""));
int volume2 = Integer.parseInt(s2.replace(" ml", ""));

if (volume1 > volume2) {
return 1;
} else if (volume2 > volume1) {
return -1;
} else {
return 0;
}
}
};

这是我的获取方法:

public static ArrayList<String> getVolumesFromPreference(Context ctx) {

if (!ctx.getSharedPreferences(KEY_SHARED_PREFERENCES, MODE_PRIVATE).contains(KEY_VOLUMES_BUNDLE)) {

startDefaultVolumes(ctx, KEY_VOLUMES_BUNDLE);

}

try {
JSONArray jsonArray = new JSONArray(ctx.getSharedPreferences(KEY_SHARED_PREFERENCES, MODE_PRIVATE).getString(KEY_VOLUMES_BUNDLE, null));
ArrayList<String> lista = new ArrayList<>();

for (int i = 0; i < jsonArray.length(); i++) {
lista.add(jsonArray.getString(i));
}

Collections.sort(lista, mVolumeComparator);

return lista;
} catch (JSONException e) {
e.printStackTrace();
return null;
}


}

private static void startDefaultVolumes(Context ctx, String key_bundle) {

JSONArray jsonArray = new JSONArray();
jsonArray.put("269 ml");
jsonArray.put("350 ml");
jsonArray.put("473 ml");
jsonArray.put("550 ml");
jsonArray.put("600 ml");

SharedPreferences.Editor editor = ctx.getSharedPreferences(KEY_SHARED_PREFERENCES, MODE_PRIVATE).edit();
editor.putString(key_bundle, jsonArray.toString());
editor.commit();

}

Volumes Lib

最佳答案

使用 Integer.valueOf() 方法代替 Integer.parceInt()

关于android - 使用比较器排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com