I am trying to access the underlying data from a recyclerview
item when it scrolls onto the screen.
I am using onAttachedToRecyclerView()
inside my Adapter class. Then get the data within onScrolled()
.
Here is what I have so far:
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView)
val manager = recyclerView.layoutManager
Log.i("ProductAdapter","$manager")
if (manager is StaggeredGridLayoutManager) {
val slm: StaggeredGridLayoutManager = manager
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val firstVisibleItemPosition: Int
val firstVisibleItemPositions =
slm.findFirstVisibleItemPositions(null)
firstVisibleItemPosition = firstVisibleItemPositions[0]
if (firstVisibleItemPosition > -1) {
val item = getItem(firstVisibleItemPosition))
// do stuff with item data
}
}
})
}else{
Log.e("ProductAdapter","error")
}
}
when I set val manager = recyclerView.layoutManager
, manager
ends up being null. So the first if check never passes. My code is referencing this answer from another question.
Any ideas on how to fix this?