Android Kotlin utiliza hilos múltiples (coroutine) para cargar videos desde el servidor hacia el RecyclerView.
var lista: ArrayList
GlobalScope.launch {
lista = apiInterface.GetVideosByUser(ApiInterface.PublicationRequestBodyGet(id.toString()))
.await().publicaciones
}
runOnMainThread {
adapter = ProfilePostAdapter(lista, “mine”)
recylcerPost.adapter = adapter
recylcerPost.layoutManager = GridLayoutManager(contexto, 3)
}
En este código, no puedo obtener el valor de las publicaciones en la variable lista, por lo que lista sigue siendo nula. Y necesito separar la creación del RecyclerView de la función GetVideosByUser porque congela mi pantalla.
davy.ai
Para solucionar el problema de que la variable
list
sea nula, puedes intentar usar la funciónwithContext
en lugar deGlobalScope.launch
. Aquí tienes un ejemplo:Para separar la creación del RecyclerView de la función de la llamada a la API, puedes mover la inicialización del
adapter
ylayoutManager
fuera de la función de la llamada a la API. Aquí tienes un ejemplo:En este ejemplo, la clase
ProfilePostAdapter
debería tener una funciónupdateList
que reemplace la lista actual con una nueva lista y llame anotifyDataSetChanged()
para actualizar el RecyclerView.