I get a null object reference Exception message everytime I try filter data from Firebase Database and add them into my RecyclerView.
If I pass when(id) { "" -> {...}} everything is fine all Items which I want will be added to the RecyclerView, but if I pass when(id) { else -> {...}} it shows me a null object reference Exception.
- Exception is below the code -
fun fetchVideos(id: String?) {
if (id == currentFilter) {
currentFilter = null
return fetchSubs()
}
currentFilter = id
val uid = auth.uid
val ref = database.getReference("/content/videos")
ref.addListenerForSingleValueEvent(object: ValueEventListener {
@SuppressLint("NotifyDataSetChanged")
override fun onDataChange(p0: DataSnapshot) {
val adapter = GroupAdapter<GroupieViewHolder>()
p0.children.forEach {
val video = it.getValue(Video::class.java)
when(id) {
"" -> {
if (video != null && video.publisher_uid != uid) {
val user = database.getReference("users/$uid/subscriptions/${video.publisher_uid}")
user.addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(p0: DataSnapshot) {
val sub = p0.getValue(Subscription::class.java) ?: return
if (sub.subscribed == true){
adapter.add(VideoItem(video))
}
}
override fun onCancelled(error: DatabaseError) {
}
})
}
}
else -> {
if (video != null && video.publisher_uid == id) {
adapter.add(VideoItem(video))
}
}
}
}
// New Bottom Sheet
adapter.setOnItemClickListener{ item, view ->
val videoItem = item as VideoItem
selectedVideo = videoItem.video.video_uid
HomeFragment.selectedVideo = selectedVideo
updateViewCount()
addRecentVideo()
showVideoPlayer()
createValues()
}
try {
sub_recyclerview_videos.adapter = adapter
}catch (e: Exception){
Log.d(TAG,"${e.message}")
}
adapter.notifyDataSetChanged()
}
override fun onCancelled(p0: DatabaseError) {
}
})
}
This is my Exception:
Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setAdapter(androidx.recyclerview.widget.RecyclerView$Adapter)' on a null object reference