diff options
author | Fabian Henneke <FabianHenneke@users.noreply.github.com> | 2020-03-27 10:02:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-27 10:02:31 +0100 |
commit | 94b0b64501da5be8bdbefb237a3193e15ed1b456 (patch) | |
tree | 2fef18483933b0c35b13ccb86fef4789edc5b5c0 /app | |
parent | 791868f3d6a871379b766e44fb41755d794eb36e (diff) |
Fix: Restore store scroll position on back press (#670)
Restoring the scroll position in the main store fragment is currently
broken since the stored state (recyclerView.verticalScrollbarPosition)
is always 0 - it is just an enum that governs where the scrollbar is
placed on the screen.
The fix is to remember the list position of the last fully visible item
and scroll to it when restoring the scroll position.
Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
Diffstat (limited to 'app')
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt index a6c7bc67..52d3881e 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt @@ -123,7 +123,7 @@ class PasswordFragment : Fragment() { ) // push the category were we're going pathStack.push(item.file) - scrollPosition.push(recyclerView.verticalScrollbarPosition) + scrollPosition.push((recyclerView.layoutManager as LinearLayoutManager).findLastCompletelyVisibleItemPosition()) recyclerView.scrollToPosition(0) recyclerAdapter.clear() recyclerAdapter.addAll(getPasswords(item.file, getRepositoryDirectory(context), sortOrder)) @@ -235,7 +235,7 @@ class PasswordFragment : Fragment() { /** Goes back one level back in the path */ fun popBack() { if (passListStack.isEmpty()) return - recyclerView.scrollToPosition(scrollPosition.pop()) + (recyclerView.layoutManager as LinearLayoutManager).scrollToPosition(scrollPosition.pop()) recyclerAdapter.clear() recyclerAdapter.addAll(passListStack.pop()) pathStack.pop() |