android - 如何在Kotlin的Android共享首选项中存储2D数组?

标签 android kotlin multidimensional-array

我想使用共享首选项存储2D数组吗?

在这里,我试图将2D数组存储在一个 Activity 的共享首选项中,然后我可以使用先前存储的2D数组将其加载到另一个 Activity 中,但是我无法以共享首选项存储2D数组。

   val _rMsg = intent.getStringArrayExtra(rKey)
    val inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    val parent = _class11_

    val _arData = arrayListOf<Array<String>>()
    val sharedPreferences = getSharedPreferences("shared pref", Context.MODE_PRIVATE)
    val gson = Gson()

    val backJson = sharedPreferences.getString("task_li",null)

    val type = TypeToken<ArrayList<>>() {}.type

    _arData.add(gson.fromJson(backJson,type))

    try {



        _arData.add(_rMsg)


        val edit = sharedPreferences.edit()
        val json = gson.toJson(_arData)
        edit.putString("task_li",json)
        edit.apply()


       for (i in _arData) {
           val cardView = inflater.inflate(R.layout._preset_layout, null)
           val mT = cardView.findViewById<TextView>(R.id._title__)
           mT.text = i[0].toString()
           parent.addView(cardView)
       }


   } catch (ex: Exception) {

   }

最佳答案

我们可以使用ObjectSerializer。 [https://github.com/apache/pig/blob/89c2e8e76c68d0d0abe6a36b4e08ddc56979796f/src/org/apache/pig/impl/util/ObjectSerializer.java]这个很棒的类允许您简单地序列化和反序列化每种对象,因此您可以简单地将它们另存为字符串以共享。您可以这样存储它:

    val mArrayTest = arrayListOf<Array<String>>()
    mArrayTest.add(arrayOf("1","3"))
    mArrayTest.add(arrayOf("2","4"))

    edit.putString("mArrayTest",ObjectSerializer.serialize(mArrayTest)).commit()

并得到这样的:
  val mTestStr = pref.getString("mArrayTest",null)
  if (mTestStr != null) {
        val mTestStr2 = ObjectSerializer.deserialize(mTestStr) as ArrayList<Array<String>>
        Toast.makeText(this, mTestStr2[0][1].toString(), Toast.LENGTH_SHORT).show()
     }

关于android - 如何在Kotlin的Android共享首选项中存储2D数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58247830/

相关文章:

java - 我的 View 不为空,文本也不为空,但我得到 : content. res.Resources$NotFoundException: String Resource ID

android - 创建android条码阅读器获取数据库信息

api - 如何在Retrofit2中使用协程?

android - 在水平和垂直方向的 recyclerview 中膨胀布局,FlexboxLayout 与回收 View 添加 View 水平自动垂直

javascript - OpenLayers 3 根据特征参数值改变点填充颜色?

java - 添加 admod java 代码后 Android 应用程序崩溃

java - PHP + Android XML加密/解密

android - Gridview高度被削减

javascript - Firefox 的 toSource() 函数的任何替代方案

python - 如何在 Python 中将二维数组的字符串值转换为整数值?