【发布时间】:2022-03-18 12:08:29
【问题描述】:
这是我添加任何新项目之前的原始列表
当我在列表末尾添加一个新项目时,不滚动,第一个项目仍保留在该位置
但是当我将新项目添加到列表的开头时,所有旧项目都会下移。请注意,New item 0 不再位于列表的最顶端
我怎样才能做到,如果我在列表的开头添加一个新项目,旧项目仍然保留在确切的位置。这些新项目只有在用户向上滚动时才可见,而不是向下推所有内容。如果我没记错的话,这是RecyclerView的默认行为
这是我的代码:
MainActivity.kt
class MainActivity : ComponentActivity() {
private val list = MutableStateFlow<List<String>>(emptyList())
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
EmptyComposeTheme {
val items = list.collectAsState()
Box(Modifier.fillMaxSize()) {
LazyColumn(
Modifier.fillMaxSize(),
) {
itemsIndexed(items.value) { index: Int, item: String ->
Text(item, color = MaterialTheme.colors.onSurface)
}
}
FloatingActionButton(onClick = {
val oldList = list.value.toMutableList()
oldList.add("New item ${oldList.size}")
list.value = oldList
}, Modifier.align(Alignment.BottomStart)) {
Text("Click me!")
}
FloatingActionButton(onClick = {
val oldList = list.value.toMutableList()
oldList.add(0, "New item reversed ${oldList.size}")
list.value = oldList
}, Modifier.align(Alignment.BottomEnd)) {
Text("Click other me!")
}
}
}
}
}
}
我正在使用 Compose 版本1.0.1
【问题讨论】:
标签: android android-jetpack-compose