Vivek Modi
viewmodel.kt
private val query = MutableStateFlow("") var queryText: String get() = query.value set(value) { query.value = value } val filteredTopics = MutableStateFlow<List<ConsulationsTopics>>(emptyList()) val filteredCategories = query .debounce(200) // low debounce because we are just filtering local data .distinctUntilChanged() .combine(filteredTopics) { queryText, categoriesList -> val criteria = queryText.lowercase() if (criteria.isEmpty()) { return@combine filteredTopics } else { categoriesList.filter { category -> category.title?.lowercase()?.let { criteria.contains(it) } == true } } }
private fun setupFilteredTopic() { lifecycleScope.launchWhenCreated { repeatOnLifecycle(Lifecycle.State.CREATED) { viewModel.filteredCategories.collect { filteredTopicsList -> consultationAdapter.submitList(filteredTopicsList) } } } }
SOLVED
A modern programming language that makes developers happier.