gpt4 book ai didi

android-room - Jetpack Compose - 如何在 LazyColumn 中搜索并显示房间中的特定数据?

转载 作者:行者123 更新时间:2023-12-03 08:07:52 37 4
gpt4 key购买 nike

我想使用搜索查询从房间表中获取数据,并将结果显示在 LazyColumn 中,而不是我在那里显示的 someList 中。

也就是说,如何使用 compose from room table 实现搜索功能?

//Getting the list from room and presenting it in lazy column

val someList by mainViewModel.getSomeItems.collectAsState(initial = emptyList())


LazyColumn(
verticalArrangement = Arrangement.spacedBy(8.dp),
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {

itemsIndexed(items = someList) { itemIndex, item ->


//not really important to the question
item.currentInventory?.let {

MainScreenItemRow(
itemId = item.id,
itemNumber = item.itemNumber,
itemDescription = item.itemDescription,
currentInventory = it,
)
}
}
}
} // end of lazy

我想使用 DAO 查询,如果查询与“someList”中的一项匹配,则显示结果列表。

@Query("SELECT * from someList WHERE id LIKE :search OR itemNumber LIKE :search OR itemDescription LIKE :search")
fun searchInventory (search: String): Flow<List<SomeList>>

如何将查询结果插入到列表中并在惰性列中呈现?

最佳答案

将我更新的代码留给可能需要它的人。没有使用 DAO 或类似的东西,只是通过一些调整过滤主列表:

搜索 View :


@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,

)
}
}
}

关于android-room - Jetpack Compose - 如何在 LazyColumn 中搜索并显示房间中的特定数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71626861/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com