Nur*_*lov 13 android android-recyclerview android-jetpack-compose android-compose-lazyfor android-jetpack-compose-list
在 Compose Jetpack 中创建 recyclerView 有什么特殊方法吗?还是和往常一样?
2021 年 3 月更新:从1.0.0-beta01
LazyColumn 对于垂直列表LazyRow 对于水平列表例如:
@Composable
fun LazyRowItemsDemo() {
LazyRow {
items((1..1000).toList()) {
Text(text = "Item $it")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在jetnews示例项目list/recyclerview他们正在使用VerticalScroller与Column和使用forEach填充项下面@Composable的功能是例子
@Composable
private fun TabWithTopics(tabname: String, topics: List<String>) {
VerticalScroller {
Column {
HeightSpacer(16.dp)
topics.forEach { topic ->
TopicItem(
getTopicKey(
tabname,
"- ",
topic
), topic
)
TopicDivider()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于类和方法,请检查此链接
有关更多信息,您可以jetnews从这里的链接下载/克隆示例
https://github.com/android/compose-samples/tree/master/JetNews
对于最新的 Jetpack alpha 版本,请更新以下内容:
@Composable
fun LazyRowItemsDemo() {
LazyRowFor(items = (1..1000).toList()) {
Text(text = "Item $it")
}
}
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助。
JetNews 应用程序的示例具有静态数据。值得一提的是,根据最近的 Google 演示(尤其是从 18:30 开始),我们应该考虑ScrollingList,它用于具有未定义元素数量的列表(例如从网络下载),传统上由RecyclerView. 然后,它应该是这样的:
@Composable
fun NewsFeed(stories: List<StoryData>) {
ScrollingList(stories) { story ->
StoryWidget(story)
}
}
Run Code Online (Sandbox Code Playgroud)
或者我们可以用LiveData或 RxJava Observable/做类似的事情Flowable:
@Composable
fun NewsFeed(stories: LiveData<List<StoryData>>) {
ScrollingList(stories.observe()) { story ->
StoryWidget(story)
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们将StoryWidget在迭代的每一步中重用(或我们选择的任何其他小部件),并通过 lambda 表达式动态发出数据。
| 归档时间: |
|
| 查看次数: |
6991 次 |
| 最近记录: |