CategoriasAndroidProgramación

El camino del desarrollador Android #4 – RecyclerView y Adapters

Hola amigos, bienvenidos otra vez a otro tutorial de esta serie sobre Android en este caso por fin, toca hablar de uno de los elementos más usados en todo el mundo del desarrollo Android, RecyclerViews.

¿Que son estos famosos RecyclerViews?

Los RecycerViews son elementos que permiten mostrar una lista de elementos en una aplicación, por ejemplo. Mostrar una lista de fotos, dónde el usuario puede interactuar con cada foto, darle «Me gusta», compartir la foto y comentar sobre la foto. ¿Les suena parecido este ejemplo? pues seguramente si, Instagram, Facebook, La aplicación que usas para ordenar pizza los domingos probablemente también utilice un RecyclerView para mostrarte todas sus pizzas.

Un RecyclerView nunca anda solo, siempre tiene compañeros y estos son los Adapters y los LayoutManager. Son algo así cómo los tres mosqueteros, El LayoutManager se encarga de gestionar cómo mostrar cada celda del Recyclerview y ordenarlas de cierta manera, el Adapter se encarga de cómo se gestiona la información manejar la lista de elementos, notificar cuando un elemento ha cambiado o ha sido eliminado y por último el RecyclerView gestiona la parte visual de cómo se muestra esta cantidad de elementos en una manera muy eficiente, esto lo hace manteniendo una cantidad de limitada de vistas.

Fuente: Android Developers

¿Entendido, por dónde empezamos?

Para empezar debemos primero agregar nuestro RecyclerView al layout XML de nuestro Activity.

Vemos que al ser un widget, tiene atributos que ya hemos visto antes en los otros post si no te acuerdas de ellos o no los has visto. Puedes revisar en nuestro post dónde hablamos de widgets Aquí.

Paso #2

Crear nuestro layout del ViewHolder, cada ViewHolder necesita mostrar un layout. Así que nos centramos en crear nuestro propio layout, es bastante simple, hacemos el mismo procedimiento que hemos realizado previamente para los Activities.

cómo podrás ver, no tiene nada del otro mundo. Es solo un Activity con un TextView dentro que nos muestra un nombre.

Paso #3

Para continuar con la creación de nuestro RecyclerView, necesitamos crear nuestro propio Adapter. Para ellos necesitamos crear una clase que sea hija del Recyclerview.Adapter y lo hacemos de la siguiente manera:

Ok, hemos creado nuestro Adapter e implementado sus métodos. Pero, un momento ¿que es un «ViewHolder» y por que esta ahí?, bueno un ViewHolder es la forma en la que cada celda es representada en el RecyclerView y cada ViewHolder necesita de un layout. Si, un archivo XML así cómo las Activities ¿Que sorpresa no?.

Puede parecer mucho código luego de implementar todos los métodos que se generan por la herencia de la clase, pero calma que explicaremos cada parte de este código.

Primero, creamos una clase llamada CustomAdapter. Esta clase hereda de RecyclerViewAdapter y dentro de ella tenemos un ViewHolder, al ser una clase hija de RecyclerView.Adapter debe implementar los siguientes métodos:

onCreateViewHolder(ViewGroup parent, int viewType): Este método se encarga de «inflar» el xml del cual hablamos previamente y regresar un objeto ViewHolder.

public void onBindViewHolder(MyViewHolder holder, int position): Este método se encarga de asignarle a cada ViewHolder los datos que tiene que mostrar por eso para acceder a los widgets que tenemos declarados previamente, necesitamos utilizar el holder.mTextView.setText y asignarle el texto obteniendo cada elemento de la lista utilizando mNameList.get(position).

public int getItemCount(): Por último este método indica la cantidad de objetos que contiene la lista. La cual hemos creado previamente, en nuestra clase CustomAdapter.

Para terminar con este paso hablaremos de la clase MyViewHolder la cual es una clase que hereda de la clase RecyclerView.ViewHolder y es dónde creamos nuestro ViewHolder personalizado, aquí declaramos los widgets que se muestra en el layout xml que hemos creado previamente y para inicializarlos tenemos que utilizar el famoso método findViewById() pero esta vez necesitamos buscar este id en el itemView que nos provee el constructor por eso utilizamos itemView.findViewById(R.id.tv_name);

Paso #4

Ahora tenemos que crear e inicializar nuestro RecyclerView y Adapter en el Activity que estamos utilizando. Lo hacemos de la siguiente manera:

Aquí podemos observar, cómo creamos un RecyclerView y lo inicializamos, luego creamos una lista de nombres que es con la cual vamos a rellenar nuestro CustomAdapter y llegamos al LayoutManager el cual se encarga de ordenar y manejar las celdas que le envie el Adapter, existen tres tipos de LayoutManager las cuales son:

  • LinearLayoutManager: El cual muestra las celdas cómo si fuera un LinearLayout de forma vertical o de forma horizontal.
  • GridLayoutManager: Que muestra los elementos en forma de cuadrícula.
  • StaggeredGridLayoutManager: Parecido al GridLayoutManager solo que esta lo muestra de una manera escalonada.

Si no estas contento con alguno de estos 3, siempre puedes crear tu propio LayoutManager.

Luego, indicamos al RecyclerView que ItemAnimator debe utilizar el cual es una animación que se muestra en una celda cuando un cambio es realizado en el Adapter y un divisor que divide cada celda de nuestro RecyclerView. Para terminar solo le indicamos al RecyclerView cual es el Adapter que debe utilizar y hemos terminado!

RecyclerView

Y con esto tenemos otra herramienta más a nuestro arsenal, dónde sin duda alguna es una de las más importantes y muy usadas en este mundo del desarrollo Android, no te pierdas la próxima entrega de esta serie de tutoriales dónde crearemos una aplicación desde 0 y utilizaremos todos los conocimientos que hemos ido publicando hasta el momento.

Y cómo siempre, si te ha gustado el Post o nuestro blog puedes comentar, compartir nuestro post por las redes sociales y seguirnos en ellas (Instagram, Twitter, Facebook) para que no te pierdas ningún Post de nuestro blog y más importante, nos apoyes. ¡Hasta luego!

CategoriasProgramación

¡Algoritmos!, ¿Que son?

¡Hola! Soy Giuseppe Vetri un fanático de la computación, ingeniero en computación y apasionado por el desarrollo. Este es mi primer post en este blog llamado CodingPizza y mi primer post en general quise abrir este blog para contar un poco acerca de mis experiencias con el desarrollo y poder colaborar con otros desarrolladores que estén aprendiendo o se encuentren en un nivel mas avanzado acerca de software hablar sobre las buenas practicas y entender juntos algunas documentaciones que no son del todo amigables.Bueno, Basta de hablar de mi. Hablemos del tema de hoy el cual es ¡Algoritmos!, ¿Que son?  ¿Para que se usan? si has llegado hasta aquí a este blog seguramente tienes alguna noción de programación. De no ser así no te preocupes que aquí lo hablaremos desde el principio.

La palabra algoritmo te puede sonar a computación, a código, a programación. Pero ¿sabias que usamos algoritmos todos los días?, Pues si.

Los algoritmos son una serie ordenada de instrucciones o procesos que se realizan para solucionar un problema, pueden ser algo sencillo como tus rutinas matutinas por ejemplo:

  1. Levantarte de la cama
  2. Cepillarte
  3. Bañarte
  4. Vestirte
  5. Desayunar
  6. Salir a trabajar

Vemos y realizamos algoritmos todos los días, ahora si lo llevamos a ciencias de la computación podemos decir que los algoritmos son una serie de instrucciones con ordenes muy precisas y escritas en un lenguaje de programación que el computador entienda y pueda realizar las ordenes que le estamos indicando.

Existen algoritmos que son muy importante en el campo de la programación los cuales son:

Algoritmos de Ordenamiento

Son algoritmos que se basan en darle una secuencia a ciertos elementos determinados los cuales podrían por ejemplo ser ordenados numéricamente. Por nombre a un par de ellos podemos mencionar al Quick Sort el cual se basa en comparar elementos para determinar su orden y el Radix Sort o ordenamiento de raíz, el cual toma el ultimo dígito significativo de cada elemento y los va agrupando consecutivamente.

Ejemplo del Quick Sort

Un Ejemplo del Radix Sort se puede encontrar en la pagina de la Universidad de San Francisco: Radix Sort Visualization
Arboles

En las ciencias de la computación un árbol es un tipo de dato abstracto o una estructura de datos que su función es simular la copa de los arboles empezando desde un padre hasta tener muchos nodos los cuales son los hijos y el nodo que no tenga hijo es llamado Hoja. Para que exista una estructura de árbol valido un nodo del árbol no puede tener mas de 1 padre ademas que no pueden haber nodos sin conectarse.

 

Arbol binario

Ejemplo de un árbol binario

Listas

Una lista es un tipo de dato abstracto como lo son los arboles, el cual contiene un numero de valores secuenciales donde los valores pueden repetirse a diferencia de las pilas o las colas los valores pueden ser removidos en cualquier posición de la lista. Existen varios tipos de listas como lo son las Listas Enlazadas(Linked List) las cuales son una secuencia de valores que tienen una referencia hacia el valor que le antecede y el valor que le procede.

Lista Enlazada

Ejemplo de Listas Enlazadas

Stacks

Los stacks o pilas, son estructuras de datos con las que se puede encontrar fácilmente una analogía en la vida real, por ejemplo podemos decir que tenemos una pila de libros de programación en el siguiente orden:

  • Introducción a Python
  • Como volverse un experto en Ruby
  • Aprendiendo Javascript
  • Libro de programación de Kotlin

Ahora queremos retirar el libro de programación de Kotlin a diferencia de las listas en las que se puede retirar un elemento de cualquier posición de esta con las pilas no ocurre lo mismo. En este caso solo podremos obtener el libro que se encuentra en la cima de la pila e ir retirando continuamente hasta poder alcanzar el libro que deseamos que en nuestro caso seria el de Kotlin (Para los que aun no conocen este lenguaje pronto aquí en CodingPizza tendremos un tutorial sobre este lenguaje de programación).

En las pilas solo podemos retirar elementos que están en la cima de esta debido a que tienen una estructura del tipo LIFO (Last In First Out) esto significa que el ultimo elemento en entrar a la pila es el primero en salir a diferencia de las listas las cuales son del tipo FIFO ( First In First Out) como ocurre en las filas de los supermercados el primero en llegar es el primero en salir.

 

Pila

Representación grafica de un Stack o Pila

Algoritmos de Grafos

Los algoritmos de grafos son muchos, uno de los mas famosos es el algoritmo de Dijkstra el cual tiene como función encontrar el camino mas corto dado un vértice de inicio. Este algoritmo funciona de la siguiente manera selecciona la arista con peso menor que contenga el vértice y lo repetirá cuantas veces sea necesario para llegar a su destino.

Ejemplo de como funciona un algoritmo de grafo

Conclusión
Existen muchas variaciones de estos algoritmos de los cuales hemos hablado, algunos son mejores que otros dependiendo del contexto en el cual se este usando. En la programación siempre habrá una herramienta que funcionara bien para cierto tipos de problemas y otra que funcionaria mejor para otros.

¿Que algoritmo te ha gustado mas? ¿Has tenido que implementar uno para una prueba practica para un trabajo o la universidad? Nos encantaría saber acerca de tu experiencia 🙂

¡Comenta y si te ha gustado el post compártelo en las redes sociales!

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies