使用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))
复制列表的另一个副本。
如何将通用列表设置为捆绑商品?
答案 0 :(得分:3)
如何将通用列表设置为捆绑商品?
你不知道。 Bundle
仅限于某些类型,List
不是其中一种。
答案 1 :(得分:1)
在大多数情况下(但并非总是如此),List
个实例实际上是ArrayList
个。因此,您可以避免大多数副本:
fun <T> List<T>.asArrayList(): ArrayList<T> = if (this is ArrayList) this else ArrayList(this)
args.putParcelableArrayList(KEY_FILTERS, filters.asArrayList())
捆绑包不会更改您放入列表中的列表,因此假设您将其放入捆绑包后也不会对其进行突变,这应该足够安全。