parcelable Kotlin 的 parcelable objects 列表
List of parcelable objects to parcelable Kotlin
我有一个可打包的团队class
@Parcelize
class Team(var name: String, var teamMembers: List<String>, var id: UUID): Parcelable
我有一个服务 returns 一个(当前硬编码的)团队列表:
@Module
class TeamInfoModule @Inject constructor(): ITeamInfoModule {
@Provides
override fun getAllTeamData(): List<Team> { ... }
}
我希望能够将此团队列表传递到 activity 的片段中,如下所示:
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))
使用 ArrayList(teamArrayList)
将列表转换为 arrayList
bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))
我有一个可打包的团队class
@Parcelize
class Team(var name: String, var teamMembers: List<String>, var id: UUID): Parcelable
我有一个服务 returns 一个(当前硬编码的)团队列表:
@Module
class TeamInfoModule @Inject constructor(): ITeamInfoModule {
@Provides
override fun getAllTeamData(): List<Team> { ... }
}
我希望能够将此团队列表传递到 activity 的片段中,如下所示:
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))
使用 ArrayList(teamArrayList)
arrayList
bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))