android recyclerview search filter example kotlin
private fun performSearch() {
binding.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
search(query)
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
search(newText)
return true
}
})
}
private fun search(text: String?) {
matchedPeople = arrayListOf()
text?.let {
people.forEach { person ->
if (person.songName.contains(text, true) ||
person.time.toString().contains(text, true)
) {
matchedPeople.add(person)
updateRecyclerView()
}
}
if (matchedPeople.isEmpty()) {
Toast.makeText(this, "No match found!", Toast.LENGTH_SHORT).show()
}
updateRecyclerView()
}
}
private fun updateRecyclerView() {
binding.recyclerView.apply {
personAdapter.list = matchedPeople
personAdapter.notifyDataSetChanged()
}
}