@@ -6,13 +6,18 @@ import android.view.View
6
6
import android.view.ViewGroup
7
7
import android.widget.Toast
8
8
import androidx.fragment.app.Fragment
9
+ import androidx.lifecycle.Observer
9
10
import androidx.lifecycle.ViewModelProvider
11
+ import androidx.paging.PagedList
10
12
import androidx.recyclerview.widget.ItemTouchHelper
11
13
import androidx.recyclerview.widget.LinearLayoutManager
12
14
import androidx.recyclerview.widget.RecyclerView
13
15
import com.dicoding.moviecatalog.R
14
16
import com.dicoding.moviecatalog.adapter.MovieFavAdapter
17
+ import com.dicoding.moviecatalog.data.source.local.entity.movie.MovieDetailEntity
15
18
import com.dicoding.moviecatalog.databinding.FragmentMovieFavBinding
19
+ import com.dicoding.moviecatalog.utils.SortUtils
20
+ import com.dicoding.moviecatalog.utils.SortUtils.NEWEST
16
21
import com.dicoding.moviecatalog.viewmodel.MovieFavViewModel
17
22
import com.dicoding.moviecatalog.viewmodel.ViewModelFactory
18
23
import com.google.android.material.snackbar.Snackbar
@@ -38,19 +43,14 @@ class MovieFavFragment : Fragment() {
38
43
itemTouchHelper.attachToRecyclerView(binding.rvMovie)
39
44
40
45
if (activity != null ) {
46
+ hideStaticUI()
41
47
val factory = ViewModelFactory .getInstance(requireActivity())
42
48
viewModel = ViewModelProvider (
43
49
this , factory
44
50
)[MovieFavViewModel ::class .java]
45
51
susAdapter = MovieFavAdapter ()
46
52
47
- viewModel.getFavMovies().observe(viewLifecycleOwner) { susMovies ->
48
- if (susMovies != null ) {
49
- binding.progressBar.visibility = View .GONE
50
- susAdapter.setMovies(susMovies)
51
- susAdapter.submitList(susMovies)
52
- }
53
- }
53
+ viewModel.getFavMovies(NEWEST ).observe(viewLifecycleOwner, movieFavObserver)
54
54
viewModel.isLoading.observe(viewLifecycleOwner) {
55
55
showLoading(it)
56
56
}
@@ -64,6 +64,30 @@ class MovieFavFragment : Fragment() {
64
64
adapter = susAdapter
65
65
}
66
66
}
67
+ binding.susListFab.setOnClickListener {
68
+ if (binding.susOrderAsc.visibility == View .GONE ) {
69
+ showStaticUI()
70
+ } else {
71
+ hideStaticUI()
72
+ }
73
+ }
74
+ binding.susOrderAsc.setOnClickListener {
75
+ viewModel.getFavMovies(NEWEST ).observe(viewLifecycleOwner, movieFavObserver)
76
+ hideStaticUI()
77
+ }
78
+ binding.susOrderDesc.setOnClickListener {
79
+ viewModel.getFavMovies(SortUtils .OLDEST )
80
+ .observe(viewLifecycleOwner, movieFavObserver)
81
+ hideStaticUI()
82
+ }
83
+ }
84
+ }
85
+
86
+ private val movieFavObserver = Observer <PagedList <MovieDetailEntity >> { susMovies ->
87
+ if (susMovies != null ) {
88
+ binding.progressBar.visibility = View .GONE
89
+ susAdapter.setMovies(susMovies)
90
+ susAdapter.submitList(susMovies)
67
91
}
68
92
}
69
93
@@ -104,6 +128,16 @@ class MovieFavFragment : Fragment() {
104
128
}
105
129
}
106
130
131
+ private fun hideStaticUI () {
132
+ binding.susOrderAsc.visibility = View .GONE
133
+ binding.susOrderDesc.visibility = View .GONE
134
+ }
135
+
136
+ private fun showStaticUI () {
137
+ binding.susOrderAsc.visibility = View .VISIBLE
138
+ binding.susOrderDesc.visibility = View .VISIBLE
139
+ }
140
+
107
141
override fun onDestroyView () {
108
142
super .onDestroyView()
109
143
_binding = null
0 commit comments