Resolve warning: FragmentPagerAdapter deprecated.
Replace FragmentPagerAdapter with FragmentStateAdapter in BrowseTabsAdapter.kt. Refactored getPageTitle as a function that returns tab name. Tab text update moved to BrowseFragment. This requires replacement of setupWithViewPager with TabMediator.attach in BrowseFragment. Also requires replacing widget declaration androidx.viewpager.widget.ViewPager with androidx.viewpager2.widget.ViewPager2 in fragment_browwse.xml.
This commit is contained in:
parent
8878e3e68f
commit
38a3183b9d
|
@ -1,8 +1,7 @@
|
||||||
package audio.funkwhale.ffa.adapters
|
package audio.funkwhale.ffa.adapters
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||||
import androidx.fragment.app.FragmentPagerAdapter
|
|
||||||
import audio.funkwhale.ffa.R
|
import audio.funkwhale.ffa.R
|
||||||
import audio.funkwhale.ffa.fragments.AlbumsGridFragment
|
import audio.funkwhale.ffa.fragments.AlbumsGridFragment
|
||||||
import audio.funkwhale.ffa.fragments.ArtistsFragment
|
import audio.funkwhale.ffa.fragments.ArtistsFragment
|
||||||
|
@ -10,13 +9,13 @@ import audio.funkwhale.ffa.fragments.FavoritesFragment
|
||||||
import audio.funkwhale.ffa.fragments.PlaylistsFragment
|
import audio.funkwhale.ffa.fragments.PlaylistsFragment
|
||||||
import audio.funkwhale.ffa.fragments.RadiosFragment
|
import audio.funkwhale.ffa.fragments.RadiosFragment
|
||||||
|
|
||||||
class BrowseTabsAdapter(val context: Fragment, manager: FragmentManager) :
|
class BrowseTabsAdapter(val context: Fragment) :
|
||||||
FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
|
FragmentStateAdapter(context) {
|
||||||
var tabs = mutableListOf<Fragment>()
|
var tabs = mutableListOf<Fragment>()
|
||||||
|
|
||||||
override fun getCount() = 5
|
override fun getItemCount() = 5
|
||||||
|
|
||||||
override fun getItem(position: Int): Fragment {
|
override fun createFragment(position: Int): Fragment {
|
||||||
tabs.getOrNull(position)?.let {
|
tabs.getOrNull(position)?.let {
|
||||||
return it
|
return it
|
||||||
}
|
}
|
||||||
|
@ -35,7 +34,7 @@ class BrowseTabsAdapter(val context: Fragment, manager: FragmentManager) :
|
||||||
return fragment
|
return fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPageTitle(position: Int): String {
|
fun tabText(position: Int): String {
|
||||||
return when (position) {
|
return when (position) {
|
||||||
0 -> context.getString(R.string.artists)
|
0 -> context.getString(R.string.artists)
|
||||||
1 -> context.getString(R.string.albums)
|
1 -> context.getString(R.string.albums)
|
||||||
|
|
|
@ -7,6 +7,7 @@ import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import audio.funkwhale.ffa.adapters.BrowseTabsAdapter
|
import audio.funkwhale.ffa.adapters.BrowseTabsAdapter
|
||||||
import audio.funkwhale.ffa.databinding.FragmentBrowseBinding
|
import audio.funkwhale.ffa.databinding.FragmentBrowseBinding
|
||||||
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
|
|
||||||
class BrowseFragment : Fragment() {
|
class BrowseFragment : Fragment() {
|
||||||
|
|
||||||
|
@ -17,7 +18,7 @@ class BrowseFragment : Fragment() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
adapter = BrowseTabsAdapter(this, childFragmentManager)
|
adapter = BrowseTabsAdapter(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
@ -27,11 +28,13 @@ class BrowseFragment : Fragment() {
|
||||||
): View {
|
): View {
|
||||||
_binding = FragmentBrowseBinding.inflate(inflater)
|
_binding = FragmentBrowseBinding.inflate(inflater)
|
||||||
return binding.root.apply {
|
return binding.root.apply {
|
||||||
binding.tabs.setupWithViewPager(binding.pager)
|
|
||||||
binding.tabs.getTabAt(0)?.select()
|
binding.tabs.getTabAt(0)?.select()
|
||||||
|
|
||||||
binding.pager.adapter = adapter
|
binding.pager.adapter = adapter
|
||||||
binding.pager.offscreenPageLimit = 3
|
binding.pager.offscreenPageLimit = 3
|
||||||
|
TabLayoutMediator(binding.tabs, binding.pager) { tab, position ->
|
||||||
|
tab.text = adapter?.tabText(position)
|
||||||
|
}.attach()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
app:tabSelectedTextColor="@color/controlColor"
|
app:tabSelectedTextColor="@color/controlColor"
|
||||||
app:tabTextColor="@color/colorPrimary" />
|
app:tabTextColor="@color/colorPrimary" />
|
||||||
|
|
||||||
<androidx.viewpager.widget.ViewPager
|
<androidx.viewpager2.widget.ViewPager2
|
||||||
android:id="@+id/pager"
|
android:id="@+id/pager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
Loading…
Reference in New Issue