En este ejemplo se recupera la información de una API, pero se muestra la información por pantalla en vez de en el Log.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textSize="20sp"
android:text="Identificador" />
<EditText
android:id="@+id/edtID"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"/>
<Button
android:id="@+id/btnBusca"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Buscar"/>
</LinearLayout>
<TextView
android:id="@+id/tvResultado"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textSize="20sp"
android:text="Resultado"/>
</LinearLayout>
MainActivity.kt
package com.javi.u10retrofitvideo
import …
class MainActivity : AppCompatActivity() {
private val apiService: ApiService by lazy {
val retrofit = Retrofit.Builder()
.baseUrl("https://javigomez.org/ESIC/PMDM/")
.addConverterFactory(GsonConverterFactory.create())
.build()
retrofit.create(ApiService::class.java)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnBusca = findViewById<Button>(R.id.btnBusca)
val edtID = findViewById<EditText>(R.id.edtID)
val tvResultado=findViewById<TextView>(R.id.tvResultado)
btnBusca.setOnClickListener {
val id = edtID.text.toString().toInt()
CoroutineScope(Dispatchers.IO).launch {
try {
val usuarios = apiService.findByID(id)
if (usuarios.isNotEmpty()) {
val usuario = usuarios[0]
Log.d(
"JAI",
"Usuario:${usuario.id}, ${usuario.nombre} ${usuario.apellido1},${usuario.apellido2}"
)
runOnUiThread {
tvResultado.text="Usuario:${usuario.id}, ${usuario.nombre} ${usuario.apellido1},${usuario.apellido2}"
}
}
} catch (e: Exception) {
Log.e("JAI", "Error al obtener usuarios", e)
}
}
}
}
}