Auxio/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
OxygenCobalt c8f7419833 Update RecyclerView item layouts
Update the song/album items to have the cover art be loaded by a BindingAdapter, and remove unnecessary chains.
2020-08-29 09:05:00 -06:00

74 lines
2.1 KiB
Kotlin

package org.oxycblt.auxio
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import org.oxycblt.auxio.databinding.FragmentMainBinding
import org.oxycblt.auxio.library.LibraryFragment
import org.oxycblt.auxio.songs.SongsFragment
class MainFragment : Fragment() {
private val shownFragments = listOf(
0, 1
)
private val libraryFragment: LibraryFragment by lazy {
LibraryFragment()
}
private val songsFragment: SongsFragment by lazy {
SongsFragment()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding = DataBindingUtil.inflate<FragmentMainBinding>(
inflater, R.layout.fragment_main, container, false
)
val adapter = PagerAdapter(requireActivity())
binding.viewPager.adapter = adapter
Log.d(this::class.simpleName, "Fragment Created.")
return binding.root
}
private fun getFragment(pos: Int): Fragment {
if (shownFragments.contains(pos)) {
return when (pos) {
0 -> libraryFragment
1 -> songsFragment
else -> libraryFragment
}
}
// Not sure how this would happen but it might
Log.e(
this::class.simpleName,
"Something went terribly wrong while swapping fragments, Substituting with libraryFragment."
)
return libraryFragment
}
private inner class PagerAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) {
override fun getItemCount(): Int = shownFragments.size
override fun createFragment(position: Int): Fragment {
Log.d(this::class.simpleName, "Switching to fragment $position.")
return getFragment(position)
}
}
}