android - 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 传递到包中?
解决方案
你应该使用:
bundle.putParcelableArrayList("teamData", ArrayList(teamArrayList))
推荐阅读
- c# - 如何将记录器实例传递给我在 ConfigureServices 中的自定义 ModelBinderProvider?
- java - 通过 NavigationComponent 在 BottomNavigation 片段之间传递数据
- php - 此路由不支持 POST 方法。支持的方法:GET、HEAD (LARAVEL)
- javascript - 在组件外部使用 redux 钩子来实现代码的可重用性
- python - 如何使用路径参数拥有单个搜索 API(未使用表单)
- unit-testing - 我的新单元测试不像单元测试
- mysql - 如何获取mysql中特定条目的总和?
- android - android studio在autocompletetextview arrayadapter中更改部分字符串的字体颜色
- python - 当输入长度超过 77 个字符时,Python 输入被隐式转换
- angular - 绑定函数时的角度冻结