From e01dcf059b28abc6b0621763404ccfb729735fe1 Mon Sep 17 00:00:00 2001 From: clfreville2 Date: Fri, 7 Apr 2023 14:58:51 +0200 Subject: [PATCH] Use a swipe to refresh layout --- app/build.gradle | 1 + .../fragment/ActivityListFragment.kt | 21 ++++++--- .../fragment/RepositoryListFragment.kt | 7 +++ app/src/main/res/layout/activity_list.xml | 18 +++++--- app/src/main/res/layout/repository_list.xml | 44 +++++++++++-------- 5 files changed, 61 insertions(+), 30 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e6fc80d..4322554 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,6 +57,7 @@ dependencies { implementation "androidx.paging:paging-runtime:$paging_version" implementation "androidx.fragment:fragment-ktx:$fragment_version" implementation "androidx.preference:preference-ktx:$preference_version" + implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' //implementation 'androidx.core:core-ktx:+' testImplementation 'junit:junit:4.13.2' diff --git a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/ActivityListFragment.kt b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/ActivityListFragment.kt index 36d6200..9eab4b2 100644 --- a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/ActivityListFragment.kt +++ b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/ActivityListFragment.kt @@ -14,6 +14,7 @@ import androidx.paging.* import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import fr.uca.iut.clfreville2.teaiswarm.R import fr.uca.iut.clfreville2.teaiswarm.REPOSITORY_NAME import fr.uca.iut.clfreville2.teaiswarm.REPOSITORY_OWNER @@ -32,16 +33,20 @@ class ActivityListFragment : Fragment(R.layout.activity_list) { var repository: RepositoryIdentifier? = null var sha: String? = null + private lateinit var pagingAdapter: ActivityAdapter + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + if (view is SwipeRefreshLayout) { + view.setOnRefreshListener { + updateCommits() + view.isRefreshing = false + } + } repository = RepositoryIdentifier( requireArguments().getString(REPOSITORY_OWNER)!!, requireArguments().getString(REPOSITORY_NAME)!! ) - updateCommits() - } - - private fun updateCommits() { val viewModel by viewModels( factoryProducer = { ActivityViewModelFactory( @@ -51,8 +56,8 @@ class ActivityListFragment : Fragment(R.layout.activity_list) { ) } ) - val pagingAdapter = ActivityAdapter(ActivityComparator) - val recyclerView = requireView().findViewById(R.id.activity_list_view) + pagingAdapter = ActivityAdapter(ActivityComparator) + val recyclerView = view.findViewById(R.id.activity_list_view) recyclerView.adapter = pagingAdapter recyclerView.layoutManager = LinearLayoutManager(requireContext()) viewLifecycleOwner.lifecycleScope.launch { @@ -62,6 +67,10 @@ class ActivityListFragment : Fragment(R.layout.activity_list) { } } + private fun updateCommits() { + pagingAdapter.refresh() + } + class ActivitySource( private val service: RepositoryService, private val repository: RepositoryIdentifier, diff --git a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryListFragment.kt b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryListFragment.kt index 2787dee..8a6f4a8 100644 --- a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryListFragment.kt +++ b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryListFragment.kt @@ -15,6 +15,7 @@ import androidx.lifecycle.viewModelScope import androidx.paging.* import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import fr.uca.iut.clfreville2.teaiswarm.R import fr.uca.iut.clfreville2.teaiswarm.TeaIsWarm import fr.uca.iut.clfreville2.teaiswarm.adapter.RepositoryListAdapter @@ -47,6 +48,12 @@ class RepositoryListFragment( override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + if (view is SwipeRefreshLayout) { + view.setOnRefreshListener { + updateRepositories() + view.isRefreshing = false + } + } recyclerView = view.findViewById(R.id.repositories_view) val spinner: Spinner = view.findViewById(R.id.sort_by_spinner) ArrayAdapter.createFromResource( diff --git a/app/src/main/res/layout/activity_list.xml b/app/src/main/res/layout/activity_list.xml index cfe3162..21abe68 100644 --- a/app/src/main/res/layout/activity_list.xml +++ b/app/src/main/res/layout/activity_list.xml @@ -1,9 +1,15 @@ - - - + + + + + + diff --git a/app/src/main/res/layout/repository_list.xml b/app/src/main/res/layout/repository_list.xml index 5556add..c8650d8 100644 --- a/app/src/main/res/layout/repository_list.xml +++ b/app/src/main/res/layout/repository_list.xml @@ -1,26 +1,34 @@ - + - + android:layout_height="match_parent" + android:orientation="vertical"> - - + - - \ No newline at end of file + + + + + + + +