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)