Skip to content

Instantly share code, notes, and snippets.

@Ahmad-Hamwi
Created March 19, 2023 20:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ahmad-Hamwi/5a2569d119c1fd17dba4a5726e54fb2a to your computer and use it in GitHub Desktop.
Save Ahmad-Hamwi/5a2569d119c1fd17dba4a5726e54fb2a to your computer and use it in GitHub Desktop.
fun LazyListState.findFirstFullyVisibleItemIndex(): Int = findFullyVisibleItemIndex(false)
fun LazyListState.findLastFullyVisibleItemIndex(): Int = findFullyVisibleItemIndex(true)
fun LazyListState.findFullyVisibleItemIndex(reversed: Boolean): Int {
layoutInfo.visibleItemsInfo
.run { if (reversed) reversed() else this }
.forEach { itemInfo ->
val itemStartOffset = itemInfo.offset
val itemEndOffset = itemInfo.offset + itemInfo.size
val viewportStartOffset = layoutInfo.viewportStartOffset
val viewportEndOffset = layoutInfo.viewportEndOffset
if (itemStartOffset >= viewportStartOffset && itemEndOffset <= viewportEndOffset) {
return itemInfo.index
}
}
return -1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment