我有 2 个 Activity ,我想传递一个对象的数组列表并将其显示在 ListView 上
Activity A:
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()
}
}
Activity 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
}
但是我得到一个空指针异常
最佳答案
在你的应用程序的 build.gradle 中,在 android 作用域下添加这个并同步 gradle -
androidExtensions {
experimental = true
}
然后按如下方式创建您的对象类 parceble -
@Parcelize
data class Persona() : Parcelable {
}
现在您可以按 Intent 发送和接收 Parcelable 列表。
更新:@Parcelize 现在不再是实验性的,请按照此答案更新实现 https://stackoverflow.com/a/64925204/9854554
关于android - 如何在 Kotlin 中将对象列表从 Activity A 传递到 Activity B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297275/