Como exibir um recyclerview dentro de um alertdialog em kotlin???
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como exibir um recyclerview dentro de um alertdialog em kotlin???
Oi Victor, tudo bem ?
Cara o AlertDialog tem um método chamado setView cujo recebe uma view nele.
O que tu pode fazer é construir uma view programaticamente, ou seja, instanciando view a view e fazendo a junção de layout para então jogar dentro desse método.
Espero ter ajudado.
Eu consigo exibir o layout porém, o recyclerview não aparece.
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
RVProfs.apply {
setHasFixedSize(true)
layoutManager = LinearLayoutManager(context)
}
launch {
context?.let {
launch {
val profs = MyDatabase(it).getDao().getAllProfessors()
RVProfs.adapter = ProfessorsAdapter(profs)
}
}
}
}
//código omitido
XML
//código omitido
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/RVProfs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ETProfessorName" />
//código omitido
//função do alert
private fun Test() {
context?.let {
val profDialog = LayoutInflater.from(context).inflate(R.layout.fragment_add_professor, null)
AlertDialog.Builder(it).apply {
setTitle("Você está certo disso?")
setView(profDialog)
setPositiveButton("OK") { _, _ ->
launch {
navigateBack()
}
}
setNegativeButton("Cancelar") { _, _ -> }
show()
}
}
}
É um pouco dificil dar pitacos sem seu código completo :(
O método onActivityCreated geralmente é de algum Fragment, que por sinal foi marcado como obsoleto, se estiver dentro de algum fragment mesmo, você devia usar o método onViewCreate.
Se puder dar mais contexto do que está fazendo e mostrar mais o código a gente vai conseguir ajudar melhor :D
Oi Matheus veja se agora melhorou.
package br.com.example.jornada.ui
import android.app.AlertDialog
import android.os.Bundle
import android.view.*
import android.widget.Toast
import androidx.navigation.Navigation
import androidx.recyclerview.widget.LinearLayoutManager
import br.com.example.jornada.R
import br.com.example.jornada.room.MyDatabase
import br.com.example.jornada.room.Professor
import br.com.example.jornada.ui.adapter.ProfessorsAdapter
import kotlinx.android.synthetic.main.fragment_add_professor.*
import kotlinx.android.synthetic.main.fragment_home.*
import kotlinx.coroutines.launch
class AddProfessorFragment : BaseFragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
setHasOptionsMenu(true)
return inflater.inflate(R.layout.fragment_add_professor, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//PRECISO CARREGAR UMA RECYCLERVIEW (LISTA DE PROFESSORES VINDO DA BASE DE DADOS).
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/RVProfs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Victor, de boa ?
Mano, tem 2 coisas que eu vi que pode estar causando esse problema.
1) seu layout, você está usando constraint, mas não passou todas as constraints necessárias para o recycler view -> esqueceu de passar a app:layout_constraintBottom_toBottomOf="parent", além disso, a gente não usa match_parent, é preferível usar 0dp tanto na largura, quanto altura, nesse caso.
2) sua busca deveria ser feita no oncreateview, assim não teria tantos problemas.
Consegue fazer isso e falar pra gente se funcionou ou não.