从另一个活动

时间:2017-08-28 10:35:34

标签: android listview arraylist kotlin adapter

我有一个为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?

2 个答案:

答案 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