Untitled
unknown
plain_text
3 years ago
3.7 kB
4
Indexable
class MoviesFragmentFavorite : Fragment() { private var _fragmentFavoriteMoviesBinding: FragmentMoviesFavoriteBinding? = null private val binding get() = _fragmentFavoriteMoviesBinding!! private lateinit var moviesAdapter: FavoriteMoviesAdapter private lateinit var viewModel: FavoriteViewModel override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _fragmentFavoriteMoviesBinding = FragmentMoviesFavoriteBinding.inflate(inflater, container, false) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) itemTouchHelper.attachToRecyclerView(binding.rvMoviesFavorite) val factory = ViewModelFactory.getInstance(requireActivity()) viewModel = ViewModelProvider(this, factory)[FavoriteViewModel::class.java] moviesAdapter = FavoriteMoviesAdapter() binding.progressBar.visibility = View.VISIBLE binding.notFound.visibility = View.GONE setList(SortUtils.RANDOM) with(binding.rvMoviesFavorite) { layoutManager = LinearLayoutManager(context) setHasFixedSize(true) this.adapter = moviesAdapter } binding.progressBar.visibility = View.VISIBLE binding.random.setOnClickListener { setList(SortUtils.RANDOM) } binding.newest.setOnClickListener { setList(SortUtils.NEWEST) } binding.popularity.setOnClickListener { setList(SortUtils.POPULARITY) } binding.vote.setOnClickListener { setList(SortUtils.VOTE) } } private val itemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.Callback() { override fun getMovementFlags( recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder ): Int { return makeMovementFlags(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) } override fun onMove( recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder ): Boolean { return true } override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { if (view != null) { val swipedPosition = viewHolder.absoluteAdapterPosition val movieEntity = moviesAdapter.getSwipedData(swipedPosition) movieEntity?.let {viewModel.setFavorite(it) } val snackbar = Snackbar.make(view as View, R.string.message_undo, Snackbar.LENGTH_LONG) snackbar.setAction(R.string.message_ok) { _ -> movieEntity?.let { viewModel.setFavorite(it) } } snackbar.show() } } }) private fun setList(sort: String) { viewModel.getFavoriteMovies(sort).observe(viewLifecycleOwner, moviesObserver) } private val moviesObserver = Observer<PagedList<MovieEntity>> { movies -> if (movies.isNotEmpty()) { binding.progressBar.visibility = View.GONE binding.notFound.visibility = View.GONE moviesAdapter.submitList(movies) moviesAdapter.notifyDataSetChanged() } else { binding.progressBar.visibility = View.GONE binding.notFound.visibility = View.VISIBLE } } override fun onDestroyView() { super.onDestroyView() _fragmentFavoriteMoviesBinding = null } }
Editor is loading...