|
@@ -54,6 +54,7 @@ import kotlinx.coroutines.flow.flowOn
|
|
|
import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.launch
|
|
|
import kotlinx.coroutines.withContext
|
|
import kotlinx.coroutines.withContext
|
|
|
import splitties.init.appCtx
|
|
import splitties.init.appCtx
|
|
|
|
|
+import kotlin.math.abs
|
|
|
|
|
|
|
|
class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel>(),
|
|
class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel>(),
|
|
|
BookAdapter.CallBack,
|
|
BookAdapter.CallBack,
|
|
@@ -240,7 +241,20 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
|
|
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
|
|
super.onScrolled(recyclerView, dx, dy)
|
|
super.onScrolled(recyclerView, dx, dy)
|
|
|
if (!recyclerView.canScrollVertically(1)) {
|
|
if (!recyclerView.canScrollVertically(1)) {
|
|
|
- scrollToBottom()
|
|
|
|
|
|
|
+ val layoutManager = recyclerView.layoutManager as LinearLayoutManager
|
|
|
|
|
+ val lastPosition = layoutManager.findLastCompletelyVisibleItemPosition()
|
|
|
|
|
+ if (lastPosition == RecyclerView.NO_POSITION) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ val lastView = layoutManager.findViewByPosition(lastPosition)
|
|
|
|
|
+ if (lastView == null) {
|
|
|
|
|
+ scrollToBottom()
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ val bottom = abs(lastView.bottom - recyclerView.height)
|
|
|
|
|
+ if (bottom <= 1) {
|
|
|
|
|
+ scrollToBottom()
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|