Fixed a bug that would cause the canteen plan to crash after refreshing while trying to layout the TabMediatorLayout. I don't know why that happened.

This commit is contained in:
denizk0461
2023-04-21 14:20:06 +02:00
parent b39aa1f003
commit ab316d9871
4 changed files with 38 additions and 29 deletions
@@ -72,21 +72,20 @@ class CanteenFragment : Fragment() {
viewPagerAdapter = CanteenOfferPageAdapter(listOf(), 0, getPrefRegex())
binding.viewPager.adapter = viewPagerAdapter
createTabLayoutMediator(listOf())
createTabLayoutMediator()
liveData = viewModel.allOffers
liveData.observe(viewLifecycleOwner) { offers ->
viewModel.allOffers.observe(viewLifecycleOwner) { offers ->
elements = offers
val groupedElements = offers.groupElements().distinct()
// dates = groupedElements.map { it.date }.distinct()
val newDates = viewModel.getDates()
createTabLayoutMediator(newDates)
val newDates = groupedElements.map { it.date }.distinct()//.map { item -> OfferDate(item.) }
// val newDates = viewModel.getDates()
dateSize = newDates.size
viewPagerAdapter.setNewItems(groupedElements, dateSize)
// createTabLayoutMediator(newDates)
// TODO this must be changed. if an exception is raised, then this will not fire
binding.swipeRefreshLayout.isRefreshing = false
@@ -97,13 +96,17 @@ class CanteenFragment : Fragment() {
// TODO refresh updates
}, onFinish = {
// binding.swipeRefreshLayout.isRefreshing = false
createTabLayoutMediator()
})
}
}
private fun createTabLayoutMediator(dates: List<OfferDate>) {
private fun createTabLayoutMediator(){//List<OfferDate>) {
val dates = viewModel.getDates()
if (dates.isNotEmpty()) {
Log.d("eek!7", "dates: ${dates}, viewpager pages: ${binding.viewPager.adapter?.itemCount}")
TabLayoutMediator(binding.dayTabLayout, binding.viewPager) { tab, position ->
Log.d("eek!9", position.toString())
tab.text = dates[position].date
}.attach()
}