我有一个名为Item的数据类。在我的viewmodel中,我有一个Flow,它从Roomdb中获取项目列表。在此程序中,当用户在Textfield中输入一些文本时,将调用onSearchTextChange。在键入一些文本时,我希望在UI列表字段中仅显示那些与输入文本的firstName或middleName或lastName匹配的列表项。我该如何实现这一点?
data class Item(
@PrimaryKey
val id: Int? = null,
val firstName: String,
val middleName: String,
val lastName: String,
}
class ItemListViewModel @Inject constructor(
private val repository: ItemRepository
): ViewModel() {
var itemList: Flow<List<Item>> = repository.getAllItem()
private val _searchText = MutableStateFlow("")
val searchText: StateFlow<String> = _searchText.asStateFlow()
fun onSearchTextChange(text: String){
_searchText.value = text
if (_searchText.value.isNotEmpty() && _searchText.value.isNotBlank()) {
itemList = itemList.onEach { list ->
list.filter {
it.queryName(text)
}
}
} else{
itemList= repository.getAllItem()
}
}
}
字符串
1条答案
按热度按时间ctehm74n1#
可以使用
flatMatLatest
。字符串