Skip to content

Instantly share code, notes, and snippets.

@SamueldaCostaAraujoNunes
Created August 2, 2021 23:32
Show Gist options
  • Save SamueldaCostaAraujoNunes/fb798b7cc62c400e776f5890452f190c to your computer and use it in GitHub Desktop.
Save SamueldaCostaAraujoNunes/fb798b7cc62c400e776f5890452f190c to your computer and use it in GitHub Desktop.
package br.com.samuelnunes.rickandmortyapp.ui.characters
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import androidx.paging.ExperimentalPagingApi
import br.com.samuelnunes.rickandmorty.ui.characters.CharacterItemListener
import br.com.samuelnunes.rickandmorty.ui.characters.CharactersAdapter
import br.com.samuelnunes.rickandmortyapp.data.entities.Character
import br.com.samuelnunes.rickandmortyapp.databinding.CharactersFragmentBinding
import br.com.samuelnunes.rickandmortyapp.ui.MainViewModel
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
@ExperimentalPagingApi
class CharactersFragment : Fragment(), CharacterItemListener {
private val viewModel: CharactersViewModel by viewModels()
private val mainViewModel: MainViewModel by activityViewModels()
private lateinit var binding: CharactersFragmentBinding
private val adapter = CharactersAdapter(this)
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return CharactersFragmentBinding.inflate(inflater, container, false).also{
binding = it
}.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupRecyclerView()
}
private fun setupRecyclerView() {
binding.charactersRv.adapter = adapter
submitList()
mainViewModel.query.observe(viewLifecycleOwner, { mensage ->
submitList(mensage)
})
}
fun submitList(query: String = ""){
viewModel.characters(query).observe(viewLifecycleOwner) {
adapter.submitData(lifecycle, it)
}
}
override fun onClickedCharacter(character: Character) {
val direction =
CharactersFragmentDirections
.actionCharactersFragmentToCharacterDetailFragment(character.id)
findNavController().navigate(direction)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment