I am trying to use searchview to show all matching profiles based on the characters input in search view by using the code below:
searchViewTexts = binding.searchPedagangUserEksplorasi
searchViewTexts.setOnQueryTextFocusChangeListener(object: androidx.appcompat.widget.SearchView.OnQueryTextListener,
View.OnFocusChangeListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return false
}
override fun onQueryTextChange(newText: String): Boolean {
if(searchViewTexts.isNotEmpty()) {
databaseReferenceLokasi.startAt(searchViewTexts.query.toString())
.endAt(searchViewTexts.query.toString() + "\uf8ff")
.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val adapter = GroupAdapter<GroupieViewHolder>()
if (snapshot.exists()) {
snapshot.children.forEach {
val pedagangYangDicari =
it.getValue(DataLokasiTerakhir::class.java)
if (pedagangYangDicari != null) {
adapter.add(pedagangYangDicariRC(pedagangYangDicari))
}
}
}
binding.searchViewResultRecyclerView.adapter = adapter
}
override fun onCancelled(error: DatabaseError) {
}
})
}
return true
}
override fun onFocusChange(v: View?, hasFocus: Boolean) {
}
})
And below is my recycler view holder code:
class pedagangYangDicariRC(val pedagangYangDicari: DataLokasiTerakhir): Item<GroupieViewHolder>() {
lateinit var uid: String
lateinit var auth: FirebaseAuth
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
auth = FirebaseAuth.getInstance()
uid = auth.currentUser?.uid.toString()
viewHolder.itemView.nama_usaha_search_view.text = pedagangYangDicari.namaUsaha
viewHolder.itemView.kota_asal_search_view.text = pedagangYangDicari.longitude.toString()
Picasso.get().load(pedagangYangDicari.coverImageUri).into(viewHolder.itemView.foto_search_view)
}
override fun getLayout(): Int {
return R.layout.search_user_eksplorasi_recycler_view
}
}
But nothing show up from the recycler view regardless whatever I type in the searchView. What should be fixed in the code? Thanks