使用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?
在大多数情况下(但并非总是)List
实例实际上是ArrayList
s。所以你可以避免大多数副本:
fun <T> List<T>.asArrayList(): ArrayList<T> = if (this is ArrayList) this else ArrayList(this)
args.putParcelableArrayList(KEY_FILTERS, filters.asArrayList())
Bundle不会改变你放入它的列表,所以这应该是足够安全的,假设你把它放入捆绑后不要改变它。
如何将通用列表设置为Bundle?
你没有。 Bundle
仅限于某些类型,而List
不是其中之一。