ComposeUI中的数组使用
数组声明
Kotlin中声明和初始化数组的几种方式。
- Name
- 基本语法
- Type
- array-syntax
- Description
- var array = listOf(element1, element2)
 
 
- Name
- 数组类型
- Type
- array-types
- Description
- 基本类型数组
- 对象数组
- 可空类型数组
- List和MutableList
 
 
数组声明示例
// 不同的数组声明方式
val numbers = arrayOf<Int>()
val fruits = listOf("苹果", "香蕉", "橙子")
val zeros = Array(3) { 0 }
// 自定义数据类
data class Item(
    val id: String = UUID.randomUUID().toString(),
    var name: String
)
val items = listOf(
    Item(name = "项目1"),
    Item(name = "项目2")
)
列表渲染
使用LazyColumn和LazyRow渲染列表内容。
- Name
- 渲染方式
- Type
- rendering
- Description
- LazyColumn垂直列表
- LazyRow水平列表
- items函数
- itemsIndexed函数
 
 
- Name
- 常见用法
- Type
- usage
- Description
- 简单列表
- 自定义样式
- 分组列表
- 列表交互
 
 
列表渲染示例
@Composable
fun FruitsList() {
    val fruits = listOf("苹果", "香蕉", "橙子", "葡萄")
    
    LazyColumn {
        items(fruits) { fruit ->
            Text(text = fruit)
        }
        
        // 使用itemsIndexed显示索引
        itemsIndexed(fruits) { index, fruit ->
            Text(text = "${index + 1}. $fruit")
        }
    }
}
数组操作
常见的数组和List操作方法。
- Name
- 基础操作
- Type
- basic-operations
- Description
- 添加元素(add)
- 删除元素(remove)
- 插入元素(add at index)
- 更新元素
 
 
- Name
- 高级操作
- Type
- advanced-operations
- Description
- 列表排序(sorted)
- 列表过滤(filter)
- 列表映射(map)
- 列表归约(reduce)
 
 
数组操作示例
@Composable
fun ArrayOperationsDemo() {
    var numbers by remember { mutableStateOf(mutableListOf(1, 2, 3, 4, 5)) }
    
    Column {
        // 显示原始数组
        Text("原始数组: ${numbers.joinToString()}")
        
        Button(onClick = { numbers.add(6) }) {
            Text("添加数字")
        }
        
        Button(onClick = { 
            if (numbers.isNotEmpty()) numbers.removeLast() 
        }) {
            Text("删除最后一个")
        }
        
        // 显示偶数
        val evenNumbers = numbers.filter { it % 2 == 0 }
        Text("偶数: ${evenNumbers.joinToString()}")
        
        // 所有数字乘2
        val doubled = numbers.map { it * 2 }
        Text("乘2: ${doubled.joinToString()}")
    }
}
实用技巧
Compose中列表使用的最佳实践。
- Name
- 性能优化
- Type
- optimization
- Description
- key的使用
- 状态提升
- remember优化
- LazyList性能
 
 
- Name
- 常见陷阱
- Type
- pitfalls
- Description
- 状态管理
- 重组问题
- 列表更新
- 内存管理
 
 
最佳实践示例
@Composable
fun TodoList() {
    var todos by remember { mutableStateOf(listOf(
        "学习Kotlin",
        "练习Compose",
        "完成项目"
    )) }
    var newTodo by remember { mutableStateOf("") }
    
    Column {
        LazyColumn {
            items(
                items = todos,
                key = { it } // 使用内容作为key
            ) { todo ->
                Text(
                    text = todo,
                    modifier = Modifier
                        .fillMaxWidth()
                        .clickable { /* 处理点击 */ }
                        .padding(16.dp)
                )
            }
        }
        
        Row(
            modifier = Modifier.padding(16.dp)
        ) {
            TextField(
                value = newTodo,
                onValueChange = { newTodo = it },
                placeholder = { Text("新任务") }
            )
            
            Button(
                onClick = {
                    if (newTodo.isNotEmpty()) {
                        todos = todos + newTodo
                        newTodo = ""
                    }
                }
            ) {
                Text("添加")
            }
        }
    }
}