这假设您知道要装在盒子中的特定项目的索引。
val list = ... //Contains all the items
val lowerBound = ... // Start of User List
val upperBound = ...//"
LazyColumn{
list.forEachIndexed{index, item ->
if(lowerBound == index){
item{
Text(Modifier.clip(RoundedCornerShape(topStartPercent = 50, topEndPercent = 50)) //User
.background (color)
)
}
else if(upperBound == index){
Text(Modifier.clip(RoundedCornerShape(bottomStartPercent = 50, bottomEndPercent = 50)) //User
.background (color)
}
else if(lowerBound < index < upperBound){
Text(Modifier.background(color)
else{
//Regular List Items
}
}
}
}
这只是一种解决方法。这将给出确切的效果,但不是真正的盒子。
一个更清洁的解决方案是实际构建一个自定义 Composable,并在检测到 lowerBound 后,将该 Composable 作为一个整体添加,因为虽然您不能在盒子内使用项目,但反之亦然。
就是这样:-
val list = ... //Contains all the items
val lowerBound = ... // Start of User List
val upperBound = ...//"
LazyColumn{
var x = 0
while(x++ != list.size()){
if(index == lowerBound){
item{
UserList(list.subList(lowerBound, upperBound))
}
}
else if(lowerBound < index < upperBound){
continue
}
else{
item{
User()
}
}
}
}
@Composable
fun UserList(list){
LazyColumn{
//Display List
}
}
这使列保持惰性。无性能影响