如何从 SharedPreference 读取 ArrayList 键和 ArrayList 值?

How to read ArrayList key and ArrayList value from SharedPreference?

我有两个 ArrayList,其中一个包含 userNames 的值,另一个包含它们对应的 userIds。

final ArrayList<String> user_names = new ArrayList<String>();
 user_names.add("rocky");
 user_names.add("pinky");
 user_names.add("chinky");

final ArrayList<String> user_ids = new ArrayList<String>();
user_ids.add("abc");
user_ids.add("efg");
user_ids.add("des");

我已将 user_names 存储为键,将 user_ids 存储为 SharePreferences 中的相应值。 每当用户选择一个名称时,应从 SharedPreference.I 检索其对应的 id 已实现如下所示的 sharedPreference 以存储该值,但不确定如何从 SharedPreference 检索这些值。任何帮助将不胜感激。

SharedPreferences keyValues = getSharedPreferences("userId_values", Context.MODE_PRIVATE);
      final SharedPreferences.Editor keyValuesEditor = keyValues.edit();
 final Map<ArrayList<String>, ArrayList<String>> sharedKeyValue = new HashMap<>();

  sharedKeyValue.put(user_names,user_ids);
  keyValuesEditor.apply();
  keyValuesEditor.commit();

您可以使用 Gson 将 hashmap 转换为字符串。然后将其存储在 SharedPreference.

private fun addToSP() {
        val userNames = ArrayList<String>()
        userNames.add("rocky")
        userNames.add("pinky")
        userNames.add("chinky")

        val userIds = ArrayList<String>()
        userIds.add("abc")
        userIds.add("efg")
        userIds.add("des")
        
        val keyValues = getSharedPreferences("userId_values", MODE_PRIVATE)
        val keyValuesEditor = keyValues.edit()
        
        val sharedKeyValue: MutableMap<ArrayList<String>, ArrayList<String>> = HashMap()
        sharedKeyValue[userIds] = userIds
       
        val gson = Gson()
        val hashMapString = gson.toJson(sharedKeyValue)
        
        keyValuesEditor.putString("MYHASHMAP", hashMapString)
        keyValuesEditor.apply()
        keyValuesEditor.commit()

        

        //get from shared prefs
        val storedHashMapString = keyValues.getString("MYHASHMAP", "oopsDintWork")
        val type: Type = object : TypeToken<HashMap<List<String>, List<String>>>() {}.type
        val testHashMap2: HashMap<String, String> = gson.fromJson(storedHashMapString, type)
    }