android - 如何在 Kotlin 中将对象列表从活动 A 传递到活动 B?
问题描述
我有 2 个活动,我想传递一个对象的数组列表并将其显示在 ListView
活动一:
btnGuardar.setOnClickListener{
if(edtNombre.text.toString().equals("") ||
edtApellido.text.toString().equals("") ||
edtFecha.text.toString().equals("")){
Toast.makeText(this@Main2Activity, "Debes llenar todos los campos!", Toast.LENGTH_SHORT).show()
}else{
var estadoSel : String
estadoSel = estado.onItemSelectedListener.toString()
var per = Persona(edtNombre.text.toString(),edtApellido.text.toString(),estadoSel,edtFecha.text.toString())
personas.add(per)
val intent = Intent(this@Main2Activity,Main3Activity::class.java)
//intent.putExtra("Personas", personas as Serializable)
intent.putParcelableArrayListExtra("Personas", ArrayList(personas))
edtFecha.text = null
edtApellido.text = null
edtNombre.text = null
estado.setSelection(0)
Toast.makeText(this@Main2Activity, "Registro Guardado", Toast.LENGTH_SHORT).show()
}
}
活动 B:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main3)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
//val intent = Intent()
val bundle = getIntent().extras
var arr = bundle?.getParcelableArrayList<Persona>("Personas")!!
//var arr : ArrayList<Persona> = (ArrayList<Persona>())intent.getSerializableExtra("Personas")
//intent.getSerializableExtra("Personas")
//arr = intent.extras!!.get("Personas")
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, arr)
listaPersonas.adapter = adapter
}
但我得到一个空指针异常
解决方案
在您的应用程序的 android 范围下的 build.gradle 中添加此并同步 gradle -
androidExtensions {
experimental = true
}
然后使您的对象类parceble如下 -
@Parcelize
data class Persona() : Parcelable {
}
现在您可以按意图发送和接收 Parcelable 列表。
注意* - Parcelize 是实验性功能。
推荐阅读
- google-bigquery - 为什么 bq 查询命令只将 100 行写入文件?
- ms-access - 从数据表复制到 ListBox
- django - Django:将其转换为 DetailView - 使用来自 URL 的两个参数的视图函数
- javascript - 将列表传递给 js、thymeleaf、springboot
- python - Python 脚本:从地图查询中检索多个结果
- c - 在 C 中的函数调用中使用结构参数
- javascript - 获取 URL 参数 elemId 并将其添加到按钮 onClick 属性中
- javascript - Javascript FileReader 在第一次尝试时工作,但不再工作(没有更改任何代码行)
- apache-kafka - 负载平衡数据库端点或直接生产到 Kafka
- mysql - SQL语法,nodejs sequalize,一次多行