如何在LazyColumn中限制显示的条目数量?
实现方案
你只需要在给items传入数据源时调用Kotlin集合的take()方法截取前3个元素即可,该方法不会改动原列表,性能开销极低,且列表不足3条时会自动显示全部内容,无需额外判空。
修改后完整代码如下:
@Composable fun MessageList(messages: List<Message>) { LazyColumn { items( items = messages.take(3), key = { message -> // 为条目返回稳定且唯一的键 message.id } ) { message -> MessageRow(message) } } }
如果你有其他自定义截取需求,可以参考以下扩展用法:
- 需要从指定位置开始截取时,可搭配
drop()方法使用,比如取第2到第4个元素:messages.drop(1).take(3) - 不想修改数据源的情况下,也可以通过
items的count重载实现:
@Composable fun MessageList(messages: List<Message>) { LazyColumn { items( count = minOf(messages.size, 3), key = { index -> messages[index].id } ) { index -> MessageRow(messages[index]) } } }
内容的提问来源于stack exchange,提问作者Bubbly
相关产品推荐
相关产品推荐

