diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsActivitiesFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsActivitiesFragment.kt index 2e3f49b5e..a6cf44b03 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsActivitiesFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsActivitiesFragment.kt @@ -227,7 +227,7 @@ abstract class AbsActivitiesFragment protected constructor() : val lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition() wasAtTop = firstVisibleItemPosition == 0 val activityRange = rangeOfSize(adapter.activityStartIndex, Math.max(0, adapter.activityCount - 1)) - val lastReadPosition = if (readFromBottom) { + val lastReadPosition = if (loadMore || readFromBottom) { lastVisibleItemPosition } else { firstVisibleItemPosition @@ -255,6 +255,10 @@ abstract class AbsActivitiesFragment protected constructor() : restorePosition = adapter.findPositionBySortTimestamp(lastReadId) } + if (loadMore) { + restorePosition += 1 + restorePosition.coerceInOr(0 until layoutManager.itemCount, -1) + } if (restorePosition != -1 && adapter.isActivity(restorePosition) && (loadMore || !wasAtTop || readFromBottom || (rememberPosition && firstLoad))) { diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt index 720f91f26..17b90df49 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsStatusesFragment.kt @@ -280,7 +280,7 @@ abstract class AbsStatusesFragment protected constructor() : val lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition() wasAtTop = firstVisibleItemPosition == 0 val statusRange = rangeOfSize(adapter.statusStartIndex, adapter.statusCount - 1) - val lastReadPosition = if (readFromBottom) { + val lastReadPosition = if (loadMore || readFromBottom) { lastVisibleItemPosition } else { firstVisibleItemPosition @@ -319,6 +319,10 @@ abstract class AbsStatusesFragment protected constructor() : } else { onHasMoreDataChanged(false) } + if (loadMore) { + restorePosition += 1 + restorePosition.coerceInOr(0 until layoutManager.itemCount, -1) + } if (restorePosition != -1 && adapter.isStatus(restorePosition) && (loadMore || !wasAtTop || readFromBottom || (rememberPosition && firstLoad))) { if (layoutManager.height == 0) {