目标:
1.根据列表数据,生成列表
一、列表控件
使用 Compose 的 LazyColumn 和 LazyRow。这些可组合项只会呈现屏幕上显示的元素,因此,对于较长的列表,使用它们会非常高效。
LazyListScope.items会延迟创建列表视图, itemContent即每个列表项的视图内容
/*** 聊天视图*/LazyColumn(modifier = Modifier.weight(9f),verticalArrangement = Arrangement.spacedBy(5.dp, alignment = Alignment.Bottom),state = lazyColumnListState,) {coroutineScope.launch {lazyColumnListState.animateScrollToItem(chatState.messages.size)}items(items = chatState.messages,key = { message -> message.id },) { message ->MessageView(messageData = message, chatState, activity)}item {// place holder item for scrolling to the bottom}}
对应的列表项目个数:chatState.messages 的数据项个数
key: 每个列表项的唯一键,数据项及数据项对应的键值。
{ message ->MessageView(messageData = message, chatState, activity)
}
根据消息对象,生成列表项控件 MessageView, 显示消息。
列表显示以后滚动到最后一行,
coroutineScope.launch {lazyColumnListState.animateScrollToItem(chatState.messages.size)
}