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) } } }