将对象列表传递给片段
class CholesterolPagingFragment: Fragment() { companion object { fun newInstance(): CholesterolPagingFragment { val args = Bundle() val fragment = CholesterolPagingFragment() fragment.arguments = args return fragment } } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_paging_cholesterol, container, false) return view } }
我已经写了上面的代码在Kotlin初始化一个片段。 虽然我不能找出一种方法来传递对象列表(例如: List
)到这个片段。 我已经尝试与Bundle()
但找不到一个正确的方法。
您可以将List
作为Parcelable
ArrayList
传递给Bundle ,如下所示:
companion object { fun newInstance(myList : ArrayList): MyFragment { val args = Bundle() args.putParcelableArrayList("list",myList); val fragment = MyFragment() fragment.arguments = args return fragment } }
要检索数据:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val args = arguments var myList : ArrayList = args.getParcelableArrayList ("list") }
在Human
数据类中执行Parcelable
实现:
data class Human(val name: String, val phone: String) : Parcelable { constructor(parcel: Parcel) : this( parcel.readString(), parcel.readString()) { } override fun writeToParcel(dest: Parcel?, flags: Int) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } override fun describeContents(): Int { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } companion object CREATOR : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): Human { return Human(parcel) } override fun newArray(size: Int): Array { return arrayOfNulls(size) } } }