有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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


共 (2) 个答案

  1. # 1 楼答案

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

    因此,从你的问题中,你想在SharedPreferences内存储一个List<String>myList。为此,我建议您使用Gson,因为它很简单。其主要思想是将List序列化为String中的json,然后存储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/etc中访问的值。。或者在应用重启之间保存信息。你不需要这个来完成你想要的:创建一个包含5个有序字符串的列表

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