簡體   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