HomeFragment.kt
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return setupBindings(inflater, container, savedInstanceState)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
//filter the data in step 2
return false
}
override fun onQueryTextChange(query: String): Boolean {
orderHistoryViewModel.search(query)
return false
}
})
}
Я написал setOnQueryTextListener во фрагменте. Когда я запускаю приложение, оно работает только один раз. Но как стереть отфильтрованный список и заполнять исходный список каждый раз, когда я очищаю данные из панели поиска и снова фильтрую при вводе новых данных.
Я написал функцию поиска в viewmodel. Приведенный ниже код фильтрует данные из порядкового списка и заполняет отфильтрованный список.
ViewModel.kt
fun search(query: String) {
var filteredList =
orderHistoryDetails?.orderList?.value?.filter { x -> x.order.contains(query) }
orderHistoryDetails?.orderList?.value = filteredList
}