Cześć.
Tak jak w temacie postu chcę aby dwa widoki były widoczne lub nie w zależności od tego ile itemów ma recyclerView i udało mi się to zrobić jednak pojawia się pewien efekt który chciałbym naprawić.
Zmieniam widoczność widoków za pomocą zmiennej binding.itemCount. Przez to że zmieniam wartość zmiennej w observe, to występuje efekt 'mignięcia' obrazka i napisu "Favorites group is empty". Obrazek i podpis są widoczne ułamek sekundy, potem znikają i na ekranie pojawia się lista. Proszę o pomoc.
package com.example.spoonacularapp.ui.main.fragments.favorites
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.spoonacularapp.adapters.FavoriteRecipesAdapter
import com.example.spoonacularapp.databinding.FragmentFavoriteRecipesBinding
import com.example.spoonacularapp.ui.main.MainViewModel
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class FavoriteRecipesFragment : Fragment() {
lateinit var binding: FragmentFavoriteRecipesBinding
private val mainViewModel: MainViewModel by viewModels()
private val mAdapter: FavoriteRecipesAdapter by lazy { FavoriteRecipesAdapter(requireActivity(), mainViewModel) }
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
binding = FragmentFavoriteRecipesBinding.inflate(layoutInflater, container, false)
binding.lifecycleOwner = this
binding.mainViewModel = mainViewModel
setupRecyclerView(binding.favoriteRecipesRecyclerView)
val groupId = arguments?.getInt("groupId")
mainViewModel.readFavoriteRecipes.observe(viewLifecycleOwner) { favoritesEntity ->
mAdapter.setData(favoritesEntity.filter {
it.groupId == groupId
})
binding.itemCount = mAdapter.itemCount // ustawiam widoczność widoków za pomocą tej zmiennej
}
return binding.root
}
private fun setupRecyclerView(recyclerView: RecyclerView) {
recyclerView.adapter = mAdapter
recyclerView.layoutManager = LinearLayoutManager(requireContext())
}
override fun onDestroy() {
super.onDestroy()
mAdapter.clearContextualActionMode()
}
}