java Android阵列与Gson共享数据引用
我需要创建最近5次通话日期的数组
我知道我必须在数组中保存日期,但我不知道如何对其他记录进行重新排序,以将最后一次调用日期保留为第一条记录。并且始终只保留5条记录
目标是保存最后一个调用字符串并添加到数组中,然后我重新排序并仅维护5条记录,然后使用FlexJson生成字符串并保存到SharedReferences中。有人有这个完整的过程吗
我正在做的事情就是到处抛出错误:
保存
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
它没有从字符串转换为数组列表
# 1 楼答案
首先,让我给你一个建议——如果你有3个问题,创建3个主题,而不是一个包含所有问题的主题。根据问题标题:Android array to SharedReferences我将回答这个问题
因此,从你的问题中,你想在
SharedPreferences
内存储一个List<String>
myList。为此,我建议您使用Gson
,因为它很简单。其主要思想是将List
序列化为String
中的json
,然后存储String
:因为您使用的是基元类型,所以不需要指定TypeToken,所以只需要:
它被储存起来了。要检索列表,只需执行相反的操作:
就这样
希望有帮助
ps:
SharedPreferences
它用于存储可在其他Classes
/Activities
/etc中访问的值。。或者在应用重启之间保存信息。你不需要这个来完成你想要的:创建一个包含5个有序字符串的列表编辑:这个lib可以为序列化节省一些时间;)
# 2 楼答案
尝试使用带有自定义
Comparator
的ArrayList
,如下所示:Sort ArrayList of custom Objects by property然后,对
ArrayList
进行相应的排序