繁体   English   中英

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

[英]Save a list of values from a user to storage then display them in a list

我正在创建一个应用程序,它将转换用户输入,然后将其显示在TextView中。 但我需要做的是显示最后 5 次转换。 所以我试图找出一种方法来做到这一点。 最好的方法是获取用户的输入,然后将输入存储到某种类型的 this 和 position 中吗? 我是新手,所以我可能完全错了,如果是这样,有人可以告诉我另一条通往 go 的路线。 下面的代码是获取用户输入然后将其转换并将其添加到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);
    }
}

不幸的是,SharedPreferences 没有提供一种简单的方法来存储有序列表。 “标准” Android 开发人员技巧是使用 JSON 数组代替:

保存:

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

SharedPreferences 中存储的 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字符串数组,例如,如果您决定将另一条数据与您的聊天消息(可能是时间戳)相关联。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM