0
0
mirror of https://github.com/mediathekview/zapp.git synced 2024-09-19 20:02:17 +02:00

Do not display more button when list is empty

This commit is contained in:
Christine Coenen 2022-11-20 18:08:00 +01:00
parent 5da479de62
commit b62a6f54c5
3 changed files with 37 additions and 16 deletions

View File

@ -32,6 +32,19 @@ class PersonalFragment : Fragment(), MenuProvider {
private lateinit var continueWatchingAdapter: MediathekShowListAdapter
private lateinit var bookmarkAdapter: MediathekShowListAdapter
private val downloadsHeaderAdapter = HeaderAdapater(
R.string.activity_main_tab_downloads,
R.drawable.ic_baseline_save_alt_24,
) { navigateToDownloads() }
private val continueWatchingHeaderAdapter = HeaderAdapater(
R.string.activity_main_tab_continue_watching,
R.drawable.ic_outline_play_circle_24
) { navigateToDownloads() }
private val bookmarksHeaderAdapter = HeaderAdapater(
R.string.activity_main_tab_bookmarks,
R.drawable.ic_outline_bookmarks_24
) { navigateToDownloads() }
private val downloadsLoadStatusAdapter = LoadStatusAdapter()
private val continueWatchingLoadStatusAdapter = LoadStatusAdapter()
private val bookmarkLoadStatusAdapter = LoadStatusAdapter()
@ -63,22 +76,13 @@ class PersonalFragment : Fragment(), MenuProvider {
MediathekShowListAdapter(lifecycleScope, MediathekItemType.Bookmark, showClickListener)
outerAdapter = ConcatAdapter(
HeaderAdapater(
R.string.activity_main_tab_downloads,
R.drawable.ic_baseline_save_alt_24
) { navigateToDownloads() },
downloadsHeaderAdapter,
downloadsAdapter,
downloadsLoadStatusAdapter,
HeaderAdapater(
R.string.activity_main_tab_continue_watching,
R.drawable.ic_outline_play_circle_24
) { navigateToContinueWatching() },
continueWatchingHeaderAdapter,
continueWatchingAdapter,
continueWatchingLoadStatusAdapter,
HeaderAdapater(
R.string.activity_main_tab_bookmarks,
R.drawable.ic_outline_bookmarks_24
) { navigateToBookmarks() },
bookmarksHeaderAdapter,
bookmarkAdapter,
bookmarkLoadStatusAdapter,
)
@ -93,23 +97,26 @@ class PersonalFragment : Fragment(), MenuProvider {
binding.list.adapter = outerAdapter
lifecycleScope.launch {
lifecycleScope.launchWhenCreated {
viewModel.downloadsFlow.collect {
downloadsAdapter.setShows(it)
downloadsHeaderAdapter.setShowMoreButton(it.isNotEmpty())
downloadsLoadStatusAdapter.onShowsLoaded(it.size)
}
}
lifecycleScope.launch {
lifecycleScope.launchWhenCreated {
viewModel.continueWatchingFlow.collect {
continueWatchingAdapter.setShows(it)
continueWatchingHeaderAdapter.setShowMoreButton(it.isNotEmpty())
continueWatchingLoadStatusAdapter.onShowsLoaded(it.size)
}
}
lifecycleScope.launch {
lifecycleScope.launchWhenCreated {
viewModel.bookmarkFlow.collect {
bookmarkAdapter.setShows(it)
bookmarksHeaderAdapter.setShowMoreButton(it.isNotEmpty())
bookmarkLoadStatusAdapter.onShowsLoaded(it.size)
}
}

View File

@ -14,6 +14,17 @@ class HeaderAdapater(
private val listener: Listener?,
) : RecyclerView.Adapter<HeaderViewHolder>() {
private var showMoreButton = false
fun setShowMoreButton(showMoreButton: Boolean) {
if (this.showMoreButton == showMoreButton) {
return
}
this.showMoreButton = showMoreButton
notifyItemChanged(1)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HeaderViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val binding = PersonalFragmentHeaderItemBinding.inflate(layoutInflater, parent, false)
@ -30,7 +41,7 @@ class HeaderAdapater(
}
override fun onBindViewHolder(holder: HeaderViewHolder, position: Int) {
holder.bind(labelResId, iconResId)
holder.bind(labelResId, iconResId, showMoreButton)
}
override fun getItemCount() = 1

View File

@ -2,6 +2,7 @@ package de.christinecoenen.code.zapp.app.personal.adapter
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import de.christinecoenen.code.zapp.databinding.PersonalFragmentHeaderItemBinding
@ -12,9 +13,11 @@ class HeaderViewHolder(
fun bind(
@StringRes titleResId: Int,
@DrawableRes iconResId: Int,
showMoreButton: Boolean,
) {
binding.title.setText(titleResId)
binding.icon.setImageResource(iconResId)
binding.more.isVisible = showMoreButton
}
}