2017-08-28 53 views
0

我有一个用于为listView创建新项目的活动。点击这个活动的Save按钮,我想给arrayList添加日期。此ArrayList是在另一个活动,这次活动有一个ListView和它的适配器会从ArrayList中将数据从另一个活动添加到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

implamen t mo3dInfo类中的Parceble和bundle或intent中的传递列表。 –

+0

我该怎么办? –

+0

添加EventBus()发送列表。参考:https://github.com/greenrobot/EventBus –

回答

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)); 
+0

请我想在Kotlin不是java –

0

从科特林1.1.4

使用@Parcelize标注在mo3dInfo使用Parcelable接收数据延伸自Parcelable的类别

@Parcelize 
class mo3dInfo():Parceable 

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

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

,然后传中意图mo3dInfo的数组的对象一样

intent.putExtra(key,arrayOfmo3dInfo) 

然后在您的ListView活动来解析这个对象

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

更多信息请登录Kotlin parcelable

+0

@Parcelize 类mo3dInfo():Parceable {}当我添加此行我得到一个错误 –

+0

什么你得到的错误?如果你没有启用android扩展1.1.4,然后把androidExtensions { 实验= true }在你的应用程序级别build.gradle和kotlin版本应该是1.1.4 –

+0

我怎么能启用它? –

相关问题