Eis o código
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import br.com.souza.xavier.fernando.technews.R
import br.com.souza.xavier.fernando.technews.ui.fragment.extensions.mostraErro
import br.com.souza.xavier.fernando.technews.ui.recyclerview.adapter.ListaNoticiasAdapter
import br.com.souza.xavier.fernando.technews.ui.viewmodel.ListaNoticiasViewModel
import org.koin.androidx.viewmodel.ext.android.viewModel
private const val MENSAGEM_FALHA_CARREGAR_NOTICIAS = "Não foi possível carregar as novas notícias"
class ListaNoticiasFragment : Fragment() {
private val adapter by lazy {
context?.let {
ListaNoticiasAdapter(context = it)
} ?: throw IllegalArgumentException("Contexto inválido")
}
private val viewModel: ListaNoticiasViewModel by viewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
buscaNoticias()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(
R.layout.lista_noticias,
container,
false
)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
configuraRecyclerView()
configuraFabAdicionaNoticia()
}
private fun configuraFabAdicionaNoticia() {
lista_noticias_fab_salva_noticia.setOnClickListener {
// abreFormularioModoCriacao()
}
}
private fun configuraRecyclerView() {
val divisor = DividerItemDecoration(context, LinearLayoutManager.VERTICAL)
lista_noticias_recyclerview.addItemDecoration(divisor)
lista_noticias_recyclerview.adapter = adapter
configuraAdapter()
}
private fun configuraAdapter() {
// adapter.quandoItemClicado = this::abreVisualizadorNoticia
}
private fun buscaNoticias() {
viewModel.buscaTodos().observe(this, Observer { resource ->
resource.dado?.let { adapter.atualiza(it) }
resource.erro?.let {
mostraErro(MENSAGEM_FALHA_CARREGAR_NOTICIAS)
}
})
}
}
Este é exatamente o código do curso. Única diferença é que o professor consegue fazer o import da classe
import kotlinx.android.synthetic.main.lista_noticias.*
Eu não consigo
Pergunta é : esqueci de add alguma dependência? Ou caminho do import mudou?
Tentei inflar o fragment via "view Binding" e não consegui
private val binding by lazy {
ListaNoticiasBinding.inflate(layoutInflater)
}
...
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(
binding.root,
container,
false
)
}
Isso não compila
tentei não usar esse sintetic e usar a Classe R
private fun configuraRecyclerView() {
val divisor = DividerItemDecoration(context, LinearLayoutManager.VERTICAL)
R.id.lista_noticias_recyclerview.addItemDecoration(divisor)
R.id.lista_noticias_recyclerview.adapter = adapter
configuraAdapter()
}
Isso também não compila
Não achei como fazer