将数据从另一个活动添加到arrayList

我有一个为listView创建新项目的活动。 点击这个活动的保存按钮,我想添加日期到arrayList。 这个arrayList是在另一个活动,这个活动有一个listView和它的适配器从arrayList中获取项目

这是我的适配器:

inner class mo3d1Adapter : BaseAdapter { override fun getItemId(p0: Int): Long { return p0.toLong() } override fun getCount(): Int { return listOfmo3d.size } var listOfmo3d = ArrayList<mo3dInfo>() var context: Context? = null constructor(context: Context, listOfmo3d: ArrayList<mo3dInfo>) : super() { this.listOfmo3d = listOfmo3d this.context = context } override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View { val mo3d = listOfmo3d[p0] var inflatormo3d = context!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater var myViewmo3d = inflatormo3d.inflate(R.layout.item_mo3d, null) myViewmo3d.setOnClickListener() { Toast.makeText(context, " click" , Toast.LENGTH_SHORT).show() var intent = Intent(context, mo3dDetails::class.java) startActivity(intent) } myViewmo3d.meeting_time_mo3d.text = mo3d.time.toString() myViewmo3d.meeting_name_mo3d.text = mo3d.name.toString() // myViewmo3d .meeting_time.text = mo3d .time.toString() myViewmo3d.meeting_date_mo3d.text = mo3d.date.toString() // myViewmo3d.attendance_number_.text = mo3d.n2.toString()!! return myViewmo3d } override fun getItem(p0: Int): Any { return listOfmo3d[p0] } } 

这是我的arrayList:

  var listOfmo3d = ArrayList<mo3dInfo>() 

这是点击保存按钮功能:

 fun SaveAction(view: View) { var i = MainMo3d() i.listOfmo3d.add(mo3dInfo("f", "test", "test")) } 

我如何将活动的数据传递给另一个活动并将其添加到数组列表中?

你可以从这样的活动发送

  List< mo3dInfo > l = new ArrayList<>(); Type listOfTestObject = new TypeToken<List<mo3dInfo>>() { }.getType(); String s = new Gson().toJson(l,listOfObjects); Intent intent = new Intent(context,activity); intent.putExtra("data",s); startActivity(intent); 

你可以接收这样的数据

 Type type=new TypeToken<List<mo3dInfo>>(){}.getType(); List<mo3dInfo> list=new Gson().fromJson(getintent.getStringExtra("data"),type)); 

使用来自Kotlin 1.1.4的Parcelable

在从Parcelable扩展的mo3dInfo类中使用@Parcelize注释

 @Parcelize class mo3dInfo():Parceable 

:工作室给你错误,但你可以忽略这个错误; 皮棉检查尚未更新了解@Parcelize。 相应的YouTrack问题在这里:

https://youtrack.jetbrains.com/issue/KT-19300

然后在Intent中传递mo3dInfo数组的对象

 intent.putExtra(key,arrayOfmo3dInfo) 

然后在你的listView活动中解析这个对象

  var array: ArrayList<mo3dInfo> = intent.getParcelableExtra(key) 

更多信息请参阅Kotlin parcelable