有 Java 编程相关的问题?

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

java将值列表从用户保存到存储器,然后在列表中显示它们

我正在创建一个应用程序,它将转换用户输入,然后将其显示在TextView中。但我需要做的是显示最后5次转换。所以我想找出一个方法来做到这一点。最好的方法是获取用户的输入,然后将输入存储到某种类型的文件中并定位它吗?我是新来的,所以我可能完全错了,如果是的话,请有人告诉我另一种方法。下面的代码是获取用户输入,然后将其转换并添加到TextView的代码,但我需要将其存储起来,以便显示最后5次转换

if (copper1Pressed && copper2Pressed) {
    convertedCost.setText("Converted cost: " + convert);

    myList.add(editText.getText().toString());
    myList.add(convertedCost.getText().toString());
    editText.setText("");
    String string1 = "Copper";
    String string2 = "Copper";
    for(String edit : myList) {
        edit = (string1 + " " + myList.get(0) + " = " + string2 + " " + myList.get(1));
        txtList.setText(edit);
    }
}

共 (1) 个答案

  1. # 1 楼答案

    不幸的是,SharedReferences并没有提供一种存储有序列表的简单方法。Android开发者的一个“标准”技巧是使用JSON数组:

    要保存:

    final JSONArray array = new JSONArray();
    array.put("string1");
    array.put("string2");
    final String jsonString = array.toString();
    sharedPreferences.edit().put("data", jsonString).apply();
    

    存储在SharedReferences中的jsonString的值为:

    (string1,string2)
    

    要检索:

    final String stringData = sharedPreferences.getString("data");
    final JSONArray jsonArray = new JSONArray(stringData);
    final String string1 = jsonArray.getString(0);
    final String string2 = jsonArray.getString(1);
    

    我假设myList的类型为List<String>,应该可以使用以下构造函数将其直接转换为JSONArray:

    JSONArray(Collection copyFrom)
    

    对不起,我没有在我的电脑前,否则我会自己试试

    这是一个简单的示例,但是您也可以存储一个JSONObject字符串数组,例如,如果您决定将另一段数据与您的聊天信息(可能是时间戳)关联起来

    但是对于真正的商业产品,您通常应该使用DB,而不是将JSONObject作为字符串存储在SharedReference中,因为您可能希望对数据运行高效的查询