gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:35:31 25 4
gpt4 key购买 nike

我想使用共享首选项存储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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com