android - parcelable Kotlin 的 parcelable objects 列表

标签 android 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> { ... }

}

我希望能够将此团队列表传递到 Activity 的 fragment 中,如下所示:

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 传递到包中?

最佳答案

你应该使用:

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

关于android - parcelable Kotlin 的 parcelable objects 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804128/

相关文章:

android - Google Tag Manager Android - 不支持 JSONArrays

android - 如何修复 Android 中偏移 YYY 处的 Unmarshalling unknown type code XXX?

android - 无法访问 'split' : it is private in file

android - 在后台终止应用程序时,Bundle savedInstanceState parcelable object is null=null

android - Parcelable 对象在接收 Activity 时为 Null

android - 如何在 Android 的 HTML 电子邮件中包含图像

java - 仅通过特定应用共享我的应用

android - 简单的 Android BLE 扫描仪

android - 使用 Retrofit 调用 Kotlin API

lambda - 为什么这个不可为 null 的 val 变成 "nullable"?