[英]How to Store Integer Arraylist in Shared Pref and retrieve the same in Android/Java?
我嘗試了很多建議:我知道我們可以將字符串集存儲在共享首選項中,但我有一個 Integer 數組列表。 現在,如果我嘗試將 Integer Arralist 轉換為 String arraylist 並存儲在 Shared Pref 中,然后再次執行相同的操作,那么漫長的過程和很多異常。
還有其他方法嗎?
確保我想使用共享首選項,沒有其他東西:
代碼:
public Set<String> getAppointmentStatusPosList() {
return sharedPreferences.getStringSet(APPOINTMENT_STATUS_ID_LIST, null);
}
public void setAppointmentStatusPosList(Set<String> vitalId) {
editor.putStringSet(APPOINTMENT_STATUS_ID_LIST, vitalId);
editor.apply();
}
@Override
public void selectedIndices(List<Integer> indices) {
Set<Integer> set = new HashSet<>();
set.addAll(indices);
preferenceManager.setAppointmentStatusPosList(set);
// list1 = indices;
}
將 Integer 數組轉換為字符串
List<Integer> listInteger = new ArrayList();
listInteger.add(1);
listInteger.add(2);
listInteger.add(3);
// Convert Integer array to String text
String ss = new Gson().toJson(listInteger);
將字符串文本保存到SharedPreference
SharedPreferences prefs = context.getSharedPreferences("com.example.myapplication", Context.MODE_PRIVATE);
prefs.edit().putString("APPOINTMENT_STATUS_ID_LIST_STRING", ss).apply();
從SharedPreference
獲取字符串文本
String text = prefs.getString("APPOINTMENT_STATUS_ID_LIST_STRING", "");
將字符串文本轉換為 Integer 數組
// Convert string text to Integer array
final Type type = new TypeToken<List<? extends Integer>>() {
}.getType();
listInteger = new Gson().fromJson(ss, type);
注意:- 您應該在您的應用程序Gradle
文件中添加以下依賴項。
dependencies {
implementation "com.squareup.retrofit2:converter-gson:2.3.0"
}
嘗試這個...
int[] list = new int[10];
//below is test data, add your original data same like below
for (int i = 0; i < list.length; i++) {
list[i]=i;
}
StringBuilder str = new StringBuilder();
for (int i = 0; i < list.length; i++) {
str.append(list[i]).append(",");
}
SharedPreferences.Editor editor=preferences.edit();
editor.putString("string",str.toString());
editor.commit();
String savedString = preferences.getString("string", "");
java.util.StringTokenizer st = new StringTokenizer(savedString, ",");
int[] savedList = new int[10];
for (int i = 0; i < 10; i++) {
savedList[i] = Integer.parseInt(st.nextToken());
Log.d("====","savedList : "+savedList[i]);
}
或者檢查這個庫,它是存儲任何共享偏好的方式https://github.com/yehiahd/FastSave-Android
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.