我是kotlin的新手并尝试将对象从我的适配器传递给片段。但是我在booklist
的伴随对象中遇到类型不匹配。它说Required: Parceleable Found: List<ResourcesList>?
我也尝试过使用putParcelableArrayList
和putParcelableArray
以及Serializable
,但也使用了相同的类型不匹配。
我的数据模型如下所示:
@Parcelize
class ResourcesList (val id: Int,
val name: String,
val content: Contents,
val tags: List<Tags>) : Parcelable
@Parcelize
class Contents (val id: Int,
val producers: List<Producers>,
val categories: List<Categories>,
val isAvailable: Boolean): Parcelable
@Parcelize
class Producers (val name: String,
val role: String): Parcelable
@Parcelize
class Categories (val id: Int,
val name: String): Parcelable
片段
class SeeAllFragment: Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.see_all_layout, container, false)
val bookslist = arguments.getParceleable("bookslist")
return view
}
companion object {
fun newInstance(bookslist: List<ResourcesList>?): SeeAllFragment {
val args = Bundle()
args.putParcelable("bookslist", bookslist)
val fragment = SeeAllFragment()
fragment.arguments = args
return fragment
}
}
}
答案 0 :(得分:4)
将列表放入捆绑包中:
args.putParcelableArrayList("bookslist", bookslist as ArrayList<out Parcelable>?)
获取列表:
val bookslist = arguments.getParcelableArrayList<ResourcesList>("bookslist")
答案 1 :(得分:0)
在我的编码中我使用Gson。
companion object {
const val BOOK_LIST = "bookslist"
fun getFragment(bookslist: List<ResourcesList>): SeeAllFragment {
return SeeAllFragment().apply { arguments = Bundle().apply {
putString(BOOK_LIST, Gson().toJson(bookslist))
} }
}
}
然后获取这样的数据。
val bookslist = Gson().fromJson(arguments?.getString(BOOK_LIST), object : TypeToken<List<ResourcesList>>() {}.type)