簡體   English   中英

如何在共享首選項中存儲 Integer Arraylist 並在 Android/Java 中檢索相同內容?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM