Android数组与Gson的Sharedpreferences



我需要创建一个最近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和InstanceCreator问题

没有从字符串转换为数组列表

首先让我给你一个建议——如果你有3个问题,创建3个主题,而不是一个包含所有问题。基于问题标题:Android array to sharedpreferences我将给出这个问题的答案。

所以从你的问题中,你想在SharedPreferences中存储List<String> myList。要做到这一点,我建议您使用Gson,因为它很简单。主要思想是将List序列化为json中的String,然后存储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>);

就是这样!
希望有帮助。

ps: SharedPreferences用于存储可在其他Classes/Activities/等中访问的值。或者在应用重启之间持久化信息。创建一个包含5个有序字符串的列表。

EDIT:这个库可以为您节省一些序列化的时间;)

尝试使用ArrayList与自定义Comparator,如下所示:

然后,对ArrayList进行排序。

相关内容

  • 没有找到相关文章

最新更新