[英]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.