diff options
| -rw-r--r-- | app/src/main/java/app/sidephonelauncher/ui/AppDrawerFragment.kt | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/app/src/main/java/app/sidephonelauncher/ui/AppDrawerFragment.kt b/app/src/main/java/app/sidephonelauncher/ui/AppDrawerFragment.kt index 4b0180e..70514ed 100644 --- a/app/src/main/java/app/sidephonelauncher/ui/AppDrawerFragment.kt +++ b/app/src/main/java/app/sidephonelauncher/ui/AppDrawerFragment.kt @@ -491,7 +491,6 @@ class AppDrawerFragment : Fragment() { if (position == RecyclerView.NO_POSITION) return false dismissSearchInput() - binding.recyclerView.requestFocus() focusRecyclerItem(position) return true } @@ -505,7 +504,6 @@ class AppDrawerFragment : Fragment() { return true } - binding.recyclerView.requestFocus() focusRecyclerItem(targetPosition) return true } @@ -526,12 +524,16 @@ class AppDrawerFragment : Fragment() { return RecyclerView.NO_POSITION } - private fun focusRecyclerItem(position: Int) { + private fun focusRecyclerItem(position: Int, attempt: Int = 0) { binding.recyclerView.scrollToPosition(position) binding.recyclerView.post { val holder = binding.recyclerView.findViewHolderForAdapterPosition(position) val itemView = holder?.itemView?.findViewById<View>(R.id.appRow) ?: holder?.itemView - itemView?.requestFocus() + if (itemView != null) { + itemView.requestFocus() + } else if (attempt < 3) { + focusRecyclerItem(position, attempt + 1) + } } } |
