我有一个可打包的团队课程
@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>.
我知道可以将单个团队传递给我的片段,因为它不会抛出错误。
我的问题是,有没有我还没有找到的实用工具,可以以某种方式将列表序列化为Parcelable?我有创建一个自定义TeamListClass的想法,它也实现了@Parcelize,但在我离开并编写我不需要的代码之前,我想在这里询问一下。也许是类似于JS‘Array.map()的东西,它将把每个Parcelable都传递到包中?
发布于 2020-01-19 03:39:37
您应该使用:
bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))
发布于 2020-01-19 03:40:33
使用ArrayList(teamArrayList)
将列表转换为arrayList
bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))
https://stackoverflow.com/questions/59804128
复制相似问题