Как использовать общий список для putParcelableArrayList? - PullRequest
0 голосов
/ 22 марта 2019

Использование kotlin и наличие функции занимает общий список, а внутри lis помещается в Bundle для перехода к фрагменту.

fun createArgs(filters: List<Filters>?): Bundle {
    val args = Bundle()
    args.putParcelableArrayList(KEY_FILTERS, filters)  //<=== does not compile

должен измениться на

args.putParcelableArrayList(KEY_FILTERS, ArrayList(filters))

который делает еще одну копию списка.

Как установить общий список в Bundle?

Ответы [ 2 ]

3 голосов
/ 22 марта 2019

Как установить общий список в Bundle?

Вы не делаете. Bundle ограничен только определенными типами, и List не является одним из них.

1 голос
/ 23 марта 2019

В большинстве случаев (но не всегда) List экземпляры фактически ArrayList с. Таким образом, вы можете избежать большинства копий:

fun <T> List<T>.asArrayList(): ArrayList<T> = if (this is ArrayList) this else ArrayList(this)

args.putParcelableArrayList(KEY_FILTERS, filters.asArrayList())

Пакет не изменяет список, который вы в него помещаете, так что это должно быть достаточно безопасно, если вы не изменяете его и после помещения в пакет.

...