How to use searchview to retrieve data from firebase database?

Viewed 23

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

0 Answers
Related