From 86d2250683af3328ad0dd697f1ffc8d0b913b3c0 Mon Sep 17 00:00:00 2001 From: Fedir Date: Sat, 22 Jan 2022 20:59:42 +0200 Subject: [PATCH] fixed tabs focus issues --- .../activity/main/view/tabs/TabsAdapter.kt | 19 +++++++++++-------- .../color/webtab_horizontal_text_selector.xml | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/phlox/tvwebbrowser/activity/main/view/tabs/TabsAdapter.kt b/app/src/main/java/com/phlox/tvwebbrowser/activity/main/view/tabs/TabsAdapter.kt index 6b53c37..3ff65aa 100644 --- a/app/src/main/java/com/phlox/tvwebbrowser/activity/main/view/tabs/TabsAdapter.kt +++ b/app/src/main/java/com/phlox/tvwebbrowser/activity/main/view/tabs/TabsAdapter.kt @@ -7,14 +7,14 @@ import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.phlox.tvwebbrowser.R import com.phlox.tvwebbrowser.activity.main.TabsModel import com.phlox.tvwebbrowser.activity.main.view.tabs.TabsAdapter.TabViewHolder import com.phlox.tvwebbrowser.databinding.ViewHorizontalWebtabItemBinding import com.phlox.tvwebbrowser.model.WebTabState -import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.DiffUtil.DiffResult +import com.phlox.tvwebbrowser.widgets.CheckableContainer class TabsAdapter(private val tabsModel: TabsModel, private val tabsView: TabsView) : RecyclerView.Adapter() { @@ -22,6 +22,7 @@ class TabsAdapter(private val tabsModel: TabsModel, private val tabsView: TabsVi var current: Int = 0 var listener: Listener? = null val uiHandler = Handler(Looper.getMainLooper()) + var checkedView: CheckableContainer? = null interface Listener { fun onTitleChanged(index: Int) @@ -71,20 +72,22 @@ class TabsAdapter(private val tabsModel: TabsModel, private val tabsView: TabsVi } else vb.ivFavicon.setImageResource(R.drawable.ic_launcher) - vb.root.isChecked = position == current + if (current == tabState.position) { + checkedView?.isChecked = false + vb.root.isChecked = true + checkedView = vb.root + } vb.root.tag = tabState vb.root.setOnFocusChangeListener { v, hasFocus -> if (hasFocus) { if (current != tabState.position) { - val oldCurrent = current current = tabState.position listener?.onTitleChanged(position) - uiHandler.post { - notifyItemChanged(oldCurrent) - notifyItemChanged(current) - } + checkedView?.isChecked = false + vb.root.isChecked = true + checkedView = vb.root } } } diff --git a/app/src/main/res/color/webtab_horizontal_text_selector.xml b/app/src/main/res/color/webtab_horizontal_text_selector.xml index 19528eb..d294532 100644 --- a/app/src/main/res/color/webtab_horizontal_text_selector.xml +++ b/app/src/main/res/color/webtab_horizontal_text_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file