diff --git a/app/build.gradle b/app/build.gradle index 2050cd8ef..500909c9a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -205,6 +205,8 @@ dependencies { implementation "androidx.room:room-rxjava2:${androidxRoomVersion}" kapt "androidx.room:room-compiler:${androidxRoomVersion}" + implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" + implementation "com.xwray:groupie:${groupieVersion}" implementation "com.xwray:groupie-kotlin-android-extensions:${groupieVersion}" diff --git a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt index 825b36045..b6b198b58 100644 --- a/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.kt @@ -35,6 +35,7 @@ import androidx.core.view.isVisible import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.preference.PreferenceManager +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import icepick.State import java.util.Calendar import kotlinx.android.synthetic.main.error_retry.error_button_retry @@ -57,6 +58,7 @@ import org.schabi.newpipe.util.Localization class FeedFragment : BaseListFragment() { private lateinit var viewModel: FeedViewModel + private lateinit var swipeRefreshLayout: SwipeRefreshLayout @State @JvmField var listState: Parcelable? = null @@ -84,7 +86,8 @@ class FeedFragment : BaseListFragment() { override fun onViewCreated(rootView: View, savedInstanceState: Bundle?) { super.onViewCreated(rootView, savedInstanceState) - + swipeRefreshLayout = requireView().findViewById(R.id.swiperefresh) + swipeRefreshLayout.setOnRefreshListener { reloadContent() } viewModel = ViewModelProvider(this, FeedViewModel.Factory(requireContext(), groupId)).get(FeedViewModel::class.java) viewModel.stateLiveData.observe(viewLifecycleOwner, Observer { it?.let(::handleResult) }) } @@ -190,6 +193,7 @@ class FeedFragment : BaseListFragment() { empty_state_view?.let { animateView(it, false, 0) } animateView(error_panel, false, 0) + swipeRefreshLayout.isRefreshing = false } override fun showEmptyState() { diff --git a/app/src/main/res/layout/fragment_feed.xml b/app/src/main/res/layout/fragment_feed.xml index 8d5c64f8d..9f873cea1 100644 --- a/app/src/main/res/layout/fragment_feed.xml +++ b/app/src/main/res/layout/fragment_feed.xml @@ -70,15 +70,22 @@ android:background="?attr/separator_color" /> - + android:layout_below="@+id/refresh_root_view"> + + + +