gpt4 book ai didi

java - Android 数组到 Sharedpreferences 与 Gson

转载 作者:太空狗 更新时间:2023-10-29 16:35:08 26 4
gpt4 key购买 nike

我需要创建一个包含最近 5 个通话日期的数组。

我知道我必须将日期保存在数组中,但我不知道如何重新排序其他记录以将最后一次调用日期保留在第一条记录中。并且始终只维护5条记录

目标是保存最后一个调用字符串并添加到数组中,之后我重新排序并仅维护 5 条记录,之后我使用 FlexJson 制作一个字符串并保存在 sharedpreferences 上。谁有这个完整的过程?

这是我正在做的,但到处都在抛出错误:

保存

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss dd-MM-yyyy", Locale.getDefault());
Calendar calendar = Calendar.getInstance();
String currentDateTimeString = df.format(calendar.getTime());

List<String> textList = new ArrayList<>();
JSONSerializer ser = new JSONSerializer();
textList.add(currentDateTimeString);

String jsonText = ser.deepSerialize(textList);

editor.putString("lastCall", jsonText);
editor.commit();

阅读:

String lastCall = callLogPreferences.getString("lastCall", null);
JSONDeserializer<List<String>> der = new JSONDeserializer<>();
List<String> textList = der.deserialize(lastCall);

我正在使用 FlexJson:GSON and InstanceCreator issue

它不是从字符串到数组列表的转换

最佳答案

首先让我给您一个建议 - 如果您有 3 个问题,请创建 3 个主题,而不是一个包含所有问题的主题。根据问题标题:Android array to sharedpreferences 我将针对此问题给出答案。

所以根据你的问题,你想存储一个 List<String> myList 里面 SharedPreferences .为此,我建议您使用 Gson因为它很简单。主要思想是序列化您的 ListStringjson然后存储 String :

因为您使用的是原始类型,所以您不需要指定 TypeToken所以你只需要:

public static final MY_LIST = "my_list";

List<String> myList = new ArrayList<String>();
SharedPreferences.Editor editor = prefs.edit();
editor.putString(MY_LIST, new Gson().toJson(myList));
editor.commit();

并且它被存储了。要检索列表,只需执行相反的操作:

myList = new Gson().fromJson(prefs.getString(MY_LIST, null), List<String>);

就是这样!
希望对您有所帮助。

附注:SharedPreferences它用于存储可以在其他 Classes 中访问的值/Activities/etc.. 或在应用重启之间保留信息。你不需要这个来完成你想要的:创建一个包含 5 个有序字符串的列表。

编辑:这个lib可以通过序列化为您节省一些时间;)

关于java - Android 数组到 Sharedpreferences 与 Gson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30653363/

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