简化Jetpack Compose 长列表构建
- 实现接口:
class CoverComposable : IComposableService<Cover> {
override val content: @Composable (item: Cover) -> Unit = { item ->
HomeFeedHeader(item.tag)
CoverSection(item = item)
}
}
registerComposableService(Cover::class, CoverComposable())
- 在Lazy*里使用
LazyColumn{
items(viewModel.produceItems()) {
ComposableItem(item = it)
}
}
这里还提供一直服务发现的使用方式,省去手动注册。
- 使用AutoService,添加依赖
implementation 'com.google.auto.service:auto-service:1.0-rc7'
annotationProcessor 'com.google.auto.service:auto-service:1.0-rc7'
- 注解修饰实现
@AutoService(IComposableService::class)
class CoverComposable : IComposableService<Cover> {
override val content: @Composable (item: Cover) -> Unit = { item ->
HomeFeedHeader(item.tag)
CoverSection(item = item)
}
override val type: String
get() = Cover::class.java.name
}
- 收集服务并注册
ComposableServiceManager.collectServices()
- 使用
LazyColumn{
items(viewModel.produceItems()) {
ComposableItem(item = it)
}
}