我有一个为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"))
}
如何将数据从活动传递到另一个活动并将其添加到arrayList?
答案 0 :(得分:0)
您可以发送此类活动
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));
答案 1 :(得分:0)
使用Kotlin 1.1.4中的Parcelable
在从Parcelable
扩展的mo3dInfo类中使用@Parcelize注释@Parcelize
class mo3dInfo():Parceable
注意:工作室会给您错误。但您可以忽略此错误; lint检查尚未更新以了解@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