fix shimmer items having the wrong size, update MediaFragmentSimilar to not depend on a specific view model
This commit is contained in:
@ -42,9 +42,12 @@ import kotlinx.coroutines.launch
|
||||
import org.mosad.teapod.R
|
||||
import org.mosad.teapod.databinding.FragmentHomeBinding
|
||||
import org.mosad.teapod.ui.activity.main.viewmodel.HomeViewModel
|
||||
import org.mosad.teapod.util.*
|
||||
import org.mosad.teapod.util.adapter.MediaEpisodeListAdapter
|
||||
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
||||
import org.mosad.teapod.util.playerIntent
|
||||
import org.mosad.teapod.util.setDrawableTop
|
||||
import org.mosad.teapod.util.showFragment
|
||||
import org.mosad.teapod.util.toItemMediaList
|
||||
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
@ -188,7 +191,7 @@ class HomeFragment : Fragment() {
|
||||
private fun setShimmerLayoutItemSize(shimmerLayout: ShimmerFrameLayout) {
|
||||
(shimmerLayout.children.first() as? LinearLayout)?.children?.forEach { child ->
|
||||
child.layoutParams.apply {
|
||||
width = (binding.root.measuredWidth / requireContext().resources.getInteger(R.integer.item_media_columns)) - itemOffset
|
||||
width = (resources.displayMetrics.widthPixels / requireContext().resources.getInteger(R.integer.item_media_columns)) - itemOffset
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ import org.mosad.teapod.util.playerIntent
|
||||
import org.mosad.teapod.util.tmdb.TMDBApiController
|
||||
import org.mosad.teapod.util.tmdb.TMDBMovie
|
||||
import org.mosad.teapod.util.tmdb.TMDBTVShow
|
||||
import org.mosad.teapod.util.toItemMediaList
|
||||
|
||||
/**
|
||||
* The media detail fragment.
|
||||
@ -126,6 +127,20 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() {
|
||||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||
}
|
||||
|
||||
// if has similar titles
|
||||
if (model.similarTo.total > 0) {
|
||||
MediaFragmentSimilar(model.similarTo.toItemMediaList()).also {
|
||||
fragments.add(it)
|
||||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||
}
|
||||
}
|
||||
|
||||
// disable scrolling on appbar, if no tabs where added
|
||||
if(fragments.isEmpty()) {
|
||||
val params = binding.linearMedia.layoutParams as AppBarLayout.LayoutParams
|
||||
params.scrollFlags = 0 // clear all scroll flags
|
||||
}
|
||||
|
||||
// specific gui (via tmdb)
|
||||
when (tmdbResult) {
|
||||
is TMDBTVShow -> {
|
||||
@ -154,20 +169,6 @@ class MediaFragment(private val mediaIdStr: String) : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
// if has similar titles
|
||||
if (model.similarTo.total > 0) {
|
||||
MediaFragmentSimilar().also {
|
||||
fragments.add(it)
|
||||
pagerAdapter.notifyItemInserted(fragments.indexOf(it))
|
||||
}
|
||||
}
|
||||
|
||||
// disable scrolling on appbar, if no tabs where added
|
||||
if(fragments.isEmpty()) {
|
||||
val params = binding.linearMedia.layoutParams as AppBarLayout.LayoutParams
|
||||
params.scrollFlags = 0 // clear all scroll flags
|
||||
}
|
||||
|
||||
binding.frameLoading.visibility = View.GONE // hide loading indicator
|
||||
}
|
||||
|
||||
|
@ -27,17 +27,13 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import org.mosad.teapod.databinding.FragmentMediaSimilarBinding
|
||||
import org.mosad.teapod.ui.activity.main.viewmodel.MediaFragmentViewModel
|
||||
import org.mosad.teapod.util.ItemMedia
|
||||
import org.mosad.teapod.util.adapter.MediaItemListAdapter
|
||||
import org.mosad.teapod.util.decoration.MediaItemDecoration
|
||||
import org.mosad.teapod.util.showFragment
|
||||
import org.mosad.teapod.util.toItemMediaList
|
||||
|
||||
class MediaFragmentSimilar : Fragment() {
|
||||
class MediaFragmentSimilar(val items: List<ItemMedia>) : Fragment() {
|
||||
|
||||
private val model: MediaFragmentViewModel by viewModels({requireParentFragment()})
|
||||
private lateinit var binding: FragmentMediaSimilarBinding
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
@ -55,6 +51,6 @@ class MediaFragmentSimilar : Fragment() {
|
||||
)
|
||||
|
||||
val adapterSimilar = binding.recyclerMediaSimilar.adapter as MediaItemListAdapter
|
||||
adapterSimilar.submitList(model.similarTo.toItemMediaList())
|
||||
adapterSimilar.submitList(items)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user