Androidarrays与Gson的Sharedpreferences

我需要创建一个最近5个调用日期的数组。

我知道我必须在arrays上保存日期,但我不知道如何重新排序其他记录以将最后一个呼叫日期保留为第一条记录。 并且始终只保留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 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> der = new JSONDeserializer(); List textList = der.deserialize(lastCall); 

我正在使用FlexJson: GSON和InstanceCreator问题

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

首先让我给你一个建议 – 如果你有3个问题创建3个主题,而不是所有问题。 基于问题标题: Android数组到共享偏好我将只回答这个问题。

因此,根据您的问题,您希望在SharedPreferences存储List myList。 为此,我建议您使用Gson因为它很简单。 它的主要思想是将List序列化为jsonString ,然后存储该String

由于您使用的是原始类型,因此您无需指定TypeToken,因此您只需:

 public static final MY_LIST = "my_list"; List myList = new ArrayList(); 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); 

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

ps: SharedPreferences它用于存储可以在其他Classes / Activities /等中访问的值,或者用于在应用程序重新启动之间保留信息。 您不需要它来完成您想要的任务:创建一个包含5个有序字符串的列表。

编辑:这个库可能会节省您一些序列化的时间;)

尝试使用带有自定义ComparatorArrayList ,如下所示: 按属性排序自定义对象的ArrayList

然后,相应地对ArrayList进行排序。