0

I want to implement a search view in my android project but for this I make an Edit Text and a Recycler view in my UI but, In the backend I use firebase to sesrch user and display it in the recycler view.

but the code isn't working every time it's crashing when I type a letter to search for. I use addTextChangedListner() to search after evry charachter and its working well. but it cant't getting data by searching.

My Adpater class is also working Fine. I checked it by directly implimenting all the user in the recycler view without using search bar.

searchBar.addTextChangedListener(object : TextWatcher{
            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                TODO("Not yet implemented")
            }

            override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                searchUser(p0.toString().lowercase())
            }

            override fun afterTextChanged(p0: Editable?) {
                TODO("Not yet implemented")
            }
        })

In above code searchBar is variable for Edit Text

and search User code is like Below:

private fun searchUser(s :String){
        val query = FirebaseDatabase.getInstance().getReference("Users").orderByChild("username")
        query.startAt(s)
        query.endAt(s+"\uf8ff")
        //Toast.makeText(requireContext(), "Search", Toast.LENGTH_SHORT).show()

        query.addValueEventListener(object : ValueEventListener {
            @SuppressLint("NotifyDataSetChanged")
            override fun onDataChange(snapshot: DataSnapshot) {
                userList.clear()
                for(theSnapshot in snapshot.children){
                    val user = snapshot.getValue(User::class.java)
                    userList.add(user!!)
                }
                userAdapter.notifyDataSetChanged()
            }

            override fun onCancelled(error: DatabaseError) {
                Toast.makeText(requireContext(), error.message, Toast.LENGTH_SHORT).show()
            }
        })
    }

Here is the code for My User Data class

data class User(var id: String? = null,
                var username: String? = null,
                var imageurl: String? = null,
                var fullname: String? = null
)

All of the above is my code but it is crasing when I am typing any alphabet in the Edit Text.

The Logcat is after crashing is below:

2022-10-02 04:12:26.041 17094-17094/com.data.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.data.app, PID: 17094
    java.lang.NullPointerException
        at com.data.app.adapter.UserAdapter.onBindViewHolder(UserAdapter.kt:47)
        at com.data.app.adapter.UserAdapter.onBindViewHolder(UserAdapter.kt:18)
        at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
        at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
        at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:536)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1841)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:877)
        at android.view.View.layout(View.java:23147)
        at android.view.ViewGroup.layout(ViewGroup.java:6475)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3861)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3272)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2266)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8854)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1473)
        at android.view.Choreographer.doCallbacks(Choreographer.java:1270)
        at android.view.Choreographer.doFrame(Choreographer.java:981)
2022-10-02 04:12:26.042 17094-17094/com.project.thoughtwave E/AndroidRuntime:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1458)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:263)
        at android.app.ActivityThread.main(ActivityThread.java:8296)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
  • https://github.com/meet2602/Component-Code-App/blob/master/app/src/main/java/com/materialsouk/allcodeapp/SearchWithMenuActivity.kt – Meet Bhavsar Oct 01 '22 at 05:16
  • Try removing ToDo code!! – Vivek Gupta Oct 01 '22 at 08:53
  • 1
    If the app crashes, there is a stack trace. Please look that up on logcat, and add it to your question. Besides that, if you understand Java, then most likey this [resource](https://medium.com/firebase-tips-tricks/how-to-filter-firestore-data-cheaper-705f5efec444) will help. – Alex Mamo Oct 01 '22 at 09:23
  • As Alex said: when an app crashes, it writes an error message and stack trace to its logcat. Please find those, and add them to your question by clicking the `edit` link under it. Also see https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this and https://stackoverflow.com/questions/3988788/what-is-a-stack-trace-and-how-can-i-use-it-to-debug-my-application-errors – Frank van Puffelen Oct 01 '22 at 14:25

0 Answers0