将我更新的代码留给可能需要它的人。没有使用 DAO 或类似的东西,只是通过一些调整过滤主列表:
搜索视图:
@Composable
fun SearchView(
modifier: Modifier = Modifier,
state: MutableState<TextFieldValue>,
placeHolder: String
) {
TextField(
value = state.value,
onValueChange = { value ->
state.value = value
)
}
显示最终列表的主屏幕
val textState = remember { mutableStateOf(TextFieldValue("")) }
//Place the composable SearchView wherever is needed
SearchView(state = textState, placeHolder = "")
val searchedText = textState.value.text
LazyColumn 显示主列表,如果在 searchedText 中输入了某些内容,
该列表仅更新搜索到的项目。
*从 itemsIndexed 更改为键为 item.id 的项目,因为根据搜索更新列表后,索引被重置,因此无法以相同的方式控制我的项目。
LazyColumn() {
items(items = inventoryList.filter {
it.itemNumber.contains(searchedText, ignoreCase = true) ||
it.itemDescription.contains(searchedText, ignoreCase = true)
}, key = {it.id}) { item ->
MainScreenItemRow(
itemNumber = item.itemNumber,
itemDescription = item.itemDescription,
)
}
}
}