En este post te mostraré un ejemplo de cómo crear una interfaz en Java (o interface) con una función o método que recibe un parámetro genérico, es decir, un parámetro de cualquier tipo.
Personalmente utilicé esta interfaz para tener un único Adaptador de RecyclerView en Android, pero su uso puede ser llevado más allá.
La interface Java queda definida así:
import android.view.View;
public interface InterfazClickRecyclerView<T> {
void onClick(View v, T objeto);
}
Gracias al tipo T
podemos esperar un parámetro genérico. A continuación veremos su implementación, en donde debemos especificar el tipo.
Como ves solo tenemos un método llamado onClick
que pasará un View
y un objeto de cualquier tipo, esto es, un genérico en Java.
Ahora podemos usar la interfaz. Por ejemplo:
InterfazClickRecyclerView<Deuda> interfazClickRecyclerView = new InterfazClickRecyclerView<Deuda>() {
@Override
public void onClick(View v, Deuda objeto) {
}
};
Como tenemos un método con genéricos, podemos especificar el tipo (que en este caso es la clase Deuda
) así que lo definimos y al sobrescribir ya no tenemos un tipo T
, sino un tipo Deuda
.
También se puede especificar que se va a recibir una interfaz de determinado tipo. Por ejemplo:
public void hacerAlgo(InterfazClickRecyclerView<Deuda> interfaz) {
// Aquí usar la interfaz. Por ejemplo:
Deuda deuda = new Deuda("", 0f, Calendar.getInstance(), Calendar.getInstance());
interfaz.onClick(getView(), deuda);
}
Quiero mostrar cómo se usa esta interfaz en Kotlin. Se usa así:
val interfazClickRecyclerView: InterfazClickRecyclerView<Deuda> = InterfazClickRecyclerView { _, objeto ->
Toast.makeText(activity!!, objeto.toString(), Toast.LENGTH_SHORT).show()
}
En este caso simplemente estoy mostrando el objeto en un Toast, pero recuerda, esto se puede aplicar a cualquier lugar de Java o Kotlin sin importar si es o no con Android.
Si quieres definir la interfaz en Kotlin, su equivalente es:
import android.view.View
interface InterfazClickRecyclerView<T> {
fun onClick(v: View, objeto: T)
}
Con esto terminamos por hoy.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.