Передача списка объектов в фрагмент

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<Human> ) этому фрагменту. Я попытался с Bundle() но не смог найти правильный путь.

Вы можете передать List<Human> как Parcelable ArrayList в Bundle следующим образом:

  companion object { fun newInstance(myList : ArrayList<Human>): 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<Human> = args.getParcelableArrayList<Human>("list") } 

Parcelable в классе данных Human :

 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<Human> { override fun createFromParcel(parcel: Parcel): Human { return Human(parcel) } override fun newArray(size: Int): Array<Human?> { return arrayOfNulls(size) } } }