【问题标题】:How to read ArrayList key and ArrayList value from SharedPreference?如何从 SharedPreference 中读取 ArrayList 键和 ArrayList 值?
【发布时间】:2021-06-01 07:04:12
【问题描述】:

我有两个 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 中检索其对应的 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();

【问题讨论】:

  • keyValues.getString(key,default_value)
  • 在共享偏好中,当键名相同时,我们的数据将被覆盖。在您的情况下,我建议您创建一个 SQLite 数据库而不是共享首选项。

标签: android arraylist sharedpreferences


【解决方案1】:

您可以使用 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)
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多