【发布时间】:2014-12-17 13:54:05
【问题描述】:
我在 Scala 中看到了一些库,它们可以自动(反)序列化任何自动支持成员类型的案例类,例如 JSON。
在 Android 世界中,我希望能够使用 Intent 和 Bundle 来实现。
例如,我想生成这个样板代码:
case class Ambitos(idInc: Long, idGrupo: String, ambitos: Map[String, Seq[String]])
def serialize(b: Bundle) {
b.putString("grupo", idGrupo)
b.putLong("inc", idInc)
b.putStringArray("ambitos", ambitos.keys.toArray)
ambitos.foreach { case (a, det) ⇒
b.putStringArray(a, det.toArray)
}
}
def serialize(b: Intent) {
b.putExtra("grupo", idGrupo)
b.putExtra("inc", idInc)
b.putExtra("ambitos", ambitos.keys.toArray)
ambitos.foreach { case (a, det) ⇒
b.putExtra(a, det.toArray)
}
}
}
object Ambitos {
def apply(b: Intent): Ambitos =
Ambitos(b.getLongExtra("inc", -1), b.getStringExtra("grupo"),
b.getStringArrayExtra("ambitos").map{ a ⇒ (a, b.getStringArrayExtra(a).toSeq) }.toMap)
def apply(b: Bundle): Ambitos =
Ambitos(b.getLong("inc"), b.getString("grupo"),
b.getStringArray("ambitos").map{ a ⇒ (a, b.getStringArray(a).toSeq) }.toMap)
}
是否存在这样的图书馆,还是我必须自己制作?
对于在活动之间传递复杂信息以及处理ActivityonSaveInstanceState() 和onRestoreInstanceState(),这个工具会很棒。
【问题讨论】:
标签: android scala serialization deserialization