diff --git a/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt index 0b9fbf3d2..c61377044 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt @@ -7,6 +7,8 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isGone import androidx.fragment.app.activityViewModels +import androidx.lifecycle.DefaultLifecycleObserver +import androidx.lifecycle.LifecycleOwner import com.github.libretube.R import com.github.libretube.databinding.FragmentTrendsBinding import com.github.libretube.ui.activities.SettingsActivity @@ -39,6 +41,7 @@ class TrendsFragment : DynamicLayoutManagerFragment() { viewModel.trendingVideos.observe(viewLifecycleOwner) { videos -> if (videos == null) return@observe + binding.recview.layoutManager?.onRestoreInstanceState(viewModel.recyclerViewState) binding.recview.adapter = VideosAdapter(videos.toMutableList()) binding.homeRefresh.isRefreshing = false binding.progressBar.isGone = true @@ -58,6 +61,12 @@ class TrendsFragment : DynamicLayoutManagerFragment() { viewModel.fetchTrending(requireContext()) } + viewLifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver { + override fun onDestroy(owner: LifecycleOwner) { + viewModel.recyclerViewState = _binding?.recview?.layoutManager?.onSaveInstanceState() + } + }) + viewModel.fetchTrending(requireContext()) } diff --git a/app/src/main/java/com/github/libretube/ui/models/TrendsViewModel.kt b/app/src/main/java/com/github/libretube/ui/models/TrendsViewModel.kt index 7e5853d31..f9341bd15 100644 --- a/app/src/main/java/com/github/libretube/ui/models/TrendsViewModel.kt +++ b/app/src/main/java/com/github/libretube/ui/models/TrendsViewModel.kt @@ -1,6 +1,7 @@ package com.github.libretube.ui.models import android.content.Context +import android.os.Parcelable import android.util.Log import android.widget.Toast import androidx.lifecycle.MutableLiveData @@ -20,6 +21,7 @@ import java.io.IOException class TrendsViewModel: ViewModel() { val trendingVideos = MutableLiveData>() + var recyclerViewState: Parcelable? = null fun fetchTrending(context: Context) { viewModelScope.launch {