首页 > 解决方案 > Parcelable Kotlin 的 Parcelable 对象列表

问题描述

我有一个可打包的团队课程

@Parcelize
class Team(var name: String, var teamMembers: List<String>, var id: UUID): Parcelable

我有一个服务,它返回一个(当前是硬编码的)团队列表:

@Module 
class TeamInfoModule @Inject constructor(): ITeamInfoModule {

    @Provides
    override fun getAllTeamData(): List<Team> { ... }

}

我希望能够从这样的活动中将此团队列表传递到片段中:

class MainActivity: AppCompatActivity() {

    @Inject
    lateinit var teamInfoModule: TeamInfoModule;

    lateinit var team: Team;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        DaggerServiceModuleComponent.create().inject(this)

        val bundle = Bundle()
        val teamArrayList: List<Team> = this.teamInfoModule.getAllTeamData()
        val homeFragment = HomeFragment()

        bundle.putParcelable("teamData", teamArrayList)
        homeFragment.arguments = bundle

    }
}

这会引发以下错误:Type Mismatch. Required: Parcelable? Found: List<Team>.

我知道可以将单个团队传递给我的 Fragment,因为它不会引发错误。

我的问题是,是否有一个我没有找到的实用程序可以以某种方式将 List 序列化为 Parcelable?我有创建一个自定义 TeamListClass 的想法,它也实现了@Parcelize,但我想在这里问一下,然后再开始编写我不需要的代码。也许类似于 JS 的 Array.map() 将每个 Parcelable 传递到包中?

标签: androidkotlinparcelable

解决方案


你应该使用:

bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))

推荐阅读