Clase Java (POJO) para los objetos a mostrar

A continuación se va a declarar la clase Java que permitirá crear los objetos que se mostrarán en la lista y también en la vista de detalle. En este ejemplo se está creando una aplicación que hará las funciones de una agenda de contactos, por lo que se creará una clase Java de persona (Person). Esta clase únicamente contendrá las propiedades correspondientes a las personas (id, nombre, apellidos, dirección, etc) y sus correspondientes métodos get y set. Este tipo de clases también se conocen como POJO.

Con el fin de mantener los archivos del proyecto organizados, se puede crear un nuevo paquete que llamaré models, en la que se almacenarán las clases correspondientes al modelo de datos que usará la aplicación.

Dentro de ese nuevo paquete crearé la clase Person que se ha comentado anteriormente, usando el menú contextual del nuevo paquete, seleccionando la opción New > Java Class.

En el panel principal de Android Studio aparecerá la estructura básica de la clase Java.

Para realizar este ejemplo, se van a utilizar varias propiedades de una persona de contacto de distintos tipos de datos (String, boolean, int, float) incluyendo el peso y la altura que no se suelen utilizar en una agenda de contactos pero que se incluyen para poder practicar con cantidades numéricas en pantalla. En el código fuente del proyecto puedes ver la totalidad de las propiedades que se han creado, pero aquí puedes ver una parte de ellas:

public class Person {
    private int id;
    private String name;
    private String surnames;
    private String alias;
    private boolean favorite;

Se necesita crear algún método constructor que permita posteriormente crear los objetos de esta clase, así como los métodos get y set para modificar y consultar las propiedades, especialmente por haberse declarado con ámbito private. Todo ello se puede hacer rápidamente usando el menú Code > Generate > Construtor y Code > Generate > Getter and Setter. Esas opciones también son accesibles desde el menú contextual, y recuerda en cualquier caso posicionar el cursos en el punto donde desees generar esos métodos.

Puedes crear un método constructor vacío (usando el botón Select None) y otro con cada una de las propiedades (seleccionando con el teclado todas las propiedades), ya que pueden ser de utilidad posteriormente ambas opciones.

 

Aquí puedes ver un extracto de cómo quedarían ambos métodos constructores:

    public Person() {
    }
 
    public Person(int id, String name, String surnames, String alias, boolean favorite, String email, String phoneNumber, String mobileNumber, String address, String postCode, String city, String province, String country, Date birthDate, int weight, float height, String comments, String photoFileName) {
        this.id = id;
        this.name = name;
        this.surnames = surnames;
        // ...
    } 

Para generar los getter y setter de todas las propiedades, deberás seleccionarlas todas también con el teclado, quedando algo como se muestra en el siguiente trozo de código relativo a sólo una parte de las propiedades:

    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getSurnames() {
        return surnames;
    }
 
    public void setSurnames(String surnames) {
        this.surnames = surnames;
    }

Por último, puede ser conveniente tener sobrecargado el método toString para esta clase, por si es necesario mostrar en pantalla en algún momento una referencia a uno de los objetos de esta clase. En este ejemplo se va a crear para sólo una parte de las propiedades, aquellas que pueden ser más relevantes y que permitan identificar al objeto, como el id, nombre, apellidos y alias de la persona. Este método puede ser generado automáticamente de manera similar a los procesos anteriores.

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", surnames='" + surnames + '\'' +
                ", alias='" + alias + '\'' +
                '}';
    }

Clase java para almacenar y gestionar la lista

En otra clase java, creada de manera similar a la anterior, se va a disponer de una lista en la que se almacenarán las personas que se mostrarán en la aplicación. En este ejemplo, la clase de va llamar Persons, y se declara la lista personList de manera pública y estática para facilitar su acceso posteriormente desde otras clases del proyecto.

Además se ha creado un método (loadSimpleSamples) que permite añadir a la lista un pequeño número de objetos sólocon algunas de sus datos cumplimentados, para poder hacer pequeñas pruebas iniciales.

package es.javiergarciaescobedo.addressbookdroid.models;
 
import java.util.ArrayList;
import java.util.List;
 
public class Persons {
 
    public static List<Person> personList = new ArrayList();
 
    /**
     * Load a little number of persons in the list, with only a few properties filled
     */
    public static void loadSimpleSamples() {
        Person person;
 
        person = new Person();
        person.setId(1);
        person.setName("EVA MARIA");
        person.setSurnames("HURTADO REQUENA");
        person.setAlias("EVA");
        personList.add(person);
 
        person = new Person();
        person.setId(2);
        person.setName("CARLOS DOMINGO DE GUZMAN");
        person.setSurnames("BLANCO  PEREZ");
        person.setAlias("CARLOS");
        personList.add(person);
 
        person = new Person();
        person.setId(3);
        person.setName("ANTONIO ENRIQUE");
        person.setSurnames("FUENTE DE LA SANDE\n");
        person.setAlias("ANTONIO");
        personList.add(person);
    }
 
}

Código fuente

Puedes ver el código fuente del proyecto hasta este punto en el siguiente commit del proyecto alojado en GitHub:

https://github.com/javiergarciaescobedo/AddressBookDroid/tree/0465aed1632c73f841c9e9ecd37bed665a5eba4f

 

Ver todos los artículos de este tutorial