mirror of
https://github.com/clangen/musikcube.git
synced 2024-10-02 04:52:32 +00:00
Revert "Update to ViewPager2/FragmentStateAdapter to fix deprecation warnings."
This reverts commit 35915b1100
.
This commit is contained in:
parent
2725e96c03
commit
4facbddea7
@ -23,6 +23,11 @@ android {
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
@ -88,7 +93,6 @@ dependencies {
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.5.1'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
||||
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
|
||||
implementation 'com.google.android.material:material:1.8.0-alpha02'
|
||||
implementation 'androidx.media:media:1.6.0'
|
||||
|
||||
|
@ -1,8 +1,10 @@
|
||||
package io.casey.musikcube.remote.ui.browse.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentPagerAdapter
|
||||
import io.casey.musikcube.remote.R
|
||||
import io.casey.musikcube.remote.service.playback.impl.remote.Metadata
|
||||
import io.casey.musikcube.remote.ui.albums.fragment.AlbumBrowseFragment
|
||||
@ -17,9 +19,9 @@ import io.casey.musikcube.remote.ui.tracks.fragment.TrackListFragment
|
||||
|
||||
class BrowseFragmentAdapter(private val context: Context,
|
||||
private val playback: PlaybackMixin,
|
||||
fragment: Fragment,
|
||||
fm: FragmentManager,
|
||||
private val containerId: Int = -1)
|
||||
: FragmentStateAdapter(fragment)
|
||||
: FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
|
||||
{
|
||||
private val fragments = mutableMapOf<Int, Fragment>()
|
||||
|
||||
@ -50,16 +52,7 @@ class BrowseFragmentAdapter(private val context: Context,
|
||||
else -> 0
|
||||
}
|
||||
|
||||
fun getPageTitle(position: Int): CharSequence =
|
||||
context.getString(when (position) {
|
||||
0 -> R.string.button_artists
|
||||
1 -> R.string.button_albums
|
||||
2 -> R.string.button_tracks
|
||||
3 -> R.string.button_playlists
|
||||
else -> R.string.button_offline
|
||||
})
|
||||
|
||||
override fun createFragment(index: Int): Fragment {
|
||||
override fun getItem(index: Int): Fragment {
|
||||
val fragment: BaseFragment = when (index) {
|
||||
0 -> CategoryBrowseFragment.create(
|
||||
CategoryBrowseFragment.arguments(context, Metadata.Category.ALBUM_ARTIST))
|
||||
@ -70,14 +63,27 @@ class BrowseFragmentAdapter(private val context: Context,
|
||||
else -> TrackListFragment.create(
|
||||
TrackListFragment.arguments(context, Metadata.Category.OFFLINE))
|
||||
}
|
||||
fragment.pushTo(this.containerId)
|
||||
(fragment as? IFilterable)?.setFilter(filter)
|
||||
onFragmentInstantiated?.invoke(index)
|
||||
fragments[index] = fragment
|
||||
return fragment
|
||||
return fragment.pushTo(this.containerId)
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
override fun getPageTitle(position: Int): CharSequence =
|
||||
context.getString(when (position) {
|
||||
0 -> R.string.button_artists
|
||||
1 -> R.string.button_albums
|
||||
2 -> R.string.button_tracks
|
||||
3 -> R.string.button_playlists
|
||||
else -> R.string.button_offline
|
||||
})
|
||||
|
||||
override fun getCount(): Int {
|
||||
return if (playback.streaming) 5 else 4 /* hide "offline" for remote playback */
|
||||
}
|
||||
|
||||
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||
val result = super.instantiateItem(container, position)
|
||||
fragments[position] = result as Fragment
|
||||
(result as? IFilterable)?.setFilter(filter)
|
||||
onFragmentInstantiated?.invoke(position)
|
||||
return result
|
||||
}
|
||||
}
|
@ -4,10 +4,9 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import io.casey.musikcube.remote.R
|
||||
import io.casey.musikcube.remote.ui.browse.adapter.BrowseFragmentAdapter
|
||||
import io.casey.musikcube.remote.ui.browse.constant.Browse
|
||||
@ -33,7 +32,7 @@ class BrowseFragment: BaseFragment(), ITransportObserver, IFilterable, ITitlePro
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
|
||||
inflater.inflate(R.layout.browse_fragment, container, false).apply {
|
||||
val fab = findViewById<FloatingActionButton>(R.id.fab)
|
||||
val pager = findViewById<ViewPager2>(R.id.view_pager)
|
||||
val pager = findViewById<ViewPager>(R.id.view_pager)
|
||||
val tabs = findViewById<TabLayout>(R.id.tab_layout)
|
||||
|
||||
val showFabIfNecessary = { pos: Int ->
|
||||
@ -57,7 +56,7 @@ class BrowseFragment: BaseFragment(), ITransportObserver, IFilterable, ITitlePro
|
||||
adapter = BrowseFragmentAdapter(
|
||||
appCompatActivity,
|
||||
playback,
|
||||
this@BrowseFragment,
|
||||
childFragmentManager,
|
||||
R.id.content_container)
|
||||
|
||||
adapter.onFragmentInstantiated = { pos ->
|
||||
@ -68,26 +67,23 @@ class BrowseFragment: BaseFragment(), ITransportObserver, IFilterable, ITitlePro
|
||||
|
||||
pager.isSaveEnabled = false
|
||||
pager.adapter = adapter
|
||||
pager.offscreenPageLimit = adapter.itemCount
|
||||
pager.currentItem = adapter.indexOf(extras.getString(Browse.Extras.INITIAL_CATEGORY_TYPE))
|
||||
|
||||
pager.registerOnPageChangeCallback(object: ViewPager2.OnPageChangeCallback() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
showFabIfNecessary(position)
|
||||
tabs.setupWithViewPager(pager)
|
||||
|
||||
pager.addOnPageChangeListener(object: ViewPager.OnPageChangeListener {
|
||||
override fun onPageScrollStateChanged(state: Int) {
|
||||
}
|
||||
|
||||
override fun onPageScrolled(pos: Int, offset: Float, offsetPixels: Int) {
|
||||
}
|
||||
|
||||
override fun onPageSelected(pos: Int) {
|
||||
showFabIfNecessary(pos)
|
||||
}
|
||||
})
|
||||
|
||||
TabLayoutMediator(tabs, pager, true) { tab, position ->
|
||||
tab.text = adapter.getPageTitle(position)
|
||||
}.attach()
|
||||
|
||||
val initialIndex = adapter.indexOf(
|
||||
extras.getString(Browse.Extras.INITIAL_CATEGORY_TYPE))
|
||||
|
||||
pager.setCurrentItem(initialIndex, false)
|
||||
|
||||
pager.post {
|
||||
showFabIfNecessary(pager.currentItem)
|
||||
}
|
||||
showFabIfNecessary(pager.currentItem)
|
||||
}
|
||||
|
||||
override fun onTransportChanged() =
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
Loading…
Reference in New Issue
Block a user