使用Parcelable传递List

1.定义List类

class ReCheckOrder() : Parcelable {
        var begin: String? = null
        var channel: Int = 0
        var itemDTOList: ArrayList<ReCheckItem>? = null
        override fun writeToParcel(parcel: Parcel, flags: Int) {
            parcel.writeString(begin)
            parcel.writeInt(channel)
            parcel.writeTypedList(itemDTOList)
        }
        override fun describeContents(): Int {
            return 0
        }
         constructor(parcel: Parcel) : this() {
            begin = parcel.readString()
            channel = parcel.readInt()
            itemDTOList = parcel.createTypedArrayList(ReCheckItem.CREATOR)
        }
        companion object CREATOR : Parcelable.Creator<ReCheckOrder> {
            override fun createFromParcel(parcel: Parcel): ReCheckOrder {
                return ReCheckOrder(parcel)
            }
            override fun newArray(size: Int): Array<ReCheckOrder?> {
                return arrayOfNulls(size)
            }
        }
}

2.定义List中Item的类

class ReCheckItem() : Parcelable {
    var date: String? = null
    var type: Int = 0
    constructor(parcel: Parcel) : this() {
        date = parcel.readString()
        type = parcel.readInt()
    }
    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(date)
        parcel.writeInt(type)
    }
    override fun describeContents(): Int {
        return 0
    }
    companion object CREATOR : Parcelable.Creator<ReCheckItem> {
        override fun createFromParcel(parcel: Parcel): ReCheckItem {
            return ReCheckItem(parcel)
        }
        override fun newArray(size: Int): Array<ReCheckItem?> {
            return arrayOfNulls(size)
        }
    }
}

3.启动ListActivity

  companion object {
        var PARAM_INTENT_RECHECK_ENTITY = "PARAM_INTENT_RECHECK_ENTITY"
  }
  val intent = Intent()
  //it 是ReCheckOrder的一个实例
  intent.putExtra(PARAM_INTENT_RECHECK_ENTITY, it)
  startActivity(intent.setClass(this,ProductActivity::class.java))

4.接受ProductActivity

      var mReCheckOrder: ResponseStockReCheckTask.ReCheckOrder? = null
      intent.let {
            mReCheckOrder = intent.getParcelableExtra(ListActivity.PARAM_INTENT_RECHECK_ENTITY)
      }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容