PUE: Desarrollo de Aplicaciones Android – quinta lección

User Interface responsive: vertical y horizontal. siempre intentar darle el margen maximo al usuario.

3 partes de un proyecto: manifest, java y recursos

id, identificador de elemento, muy importante

match content: se adapta al contenedor (al padre)

wrap content: tamaño que necesito para mostrar el contenido que encerra

dps y sps: unidades de medida en Android

utilizar literales en ficheros centralizados! idioma, etc (strings.xml)


Otra forma de capturar el evento “click” de un boton:
En “activity_main.xml”
<Button
android: id=”….
android: onClick=”pararSistema”
Es mejor añadir un listener!

ET=Edit Text (Cajas de texto)

et=findviewById

et.getText().toString(); -> Recuperamos el texto que hemos puesto en la caja de texto

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:weightSum="1"
android:layout_weight="0.5" (queremos distribuir la mitad del espacio. La suma de los weights tiene que dar el Sum)

Gradle,

Aqui agregaremos widgets.

Lo cambiamos por LinearLayout:

Mostrar colección de elementos:

Tenemos un buscador, para buscar elementos y cosas!

Traducciones:

Ivitados: mi data source

Trabajamos con datos en memoria: array

Entre el widget y el data source hay un elemento intermedio que se llama “adaptor”, que lo que hace es comunicarse bidireccionalmente con DataSource. Comunica el widget con el DataSource.

Adapter es una clase abstracta. En este caso nos interesa el ArrayAdapter. Es una especializacion de Adapter.

El ArrayAdapter se encarga de trabajar con arrays.

Si la R se pone en rojo, es algun problema de los XMLs.

Si peta, mirar Logcat y buscar FATAL EXCEPTION:

Pila de vistas: STACK. Una pila de activities. vista A, vista B, la A se pone en pausa y la B se pone en running.

destroy: nos cargamos la vista

package com.sergioguillen.android.listadeinvitados;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

import java.util.ArrayList;

public class InvitadosActivity extends AppCompatActivity {

    private Button btnBotonLista;
    private Button botonMostrarLista;



    ArrayList<String> invitados = null;
    ArrayAdapter<String> adapter = null;









    private Button getBtnBotonLista;
    //Notacion "Camel Case y con nombres descriptivos)
    ListView listaInvitados;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_invitados);



        //super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_invitados);

        invitados = new ArrayList<>();
        //añadir tres invitados
        invitados.add("Pepe");
        invitados.add("Maria");
        invitados.add("Josefa");


        listaInvitados = findViewById(R.id.listaInvitados);
        btnBotonLista = findViewById(R.id.button);



        View.OnClickListener listener = new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //System.out.println("BOTON PULSADO");
                Log.i("BOTON PULSADO", "HOLA");
                listaInvitados.setAdapter(adapter);

            }

        };

        //asociamos listener
         btnBotonLista.setOnClickListener(listener);



        //array adapter
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, invitados);
        //listaInvitados.setAdapter(adapter);
        //this.listaInvitados.setAdapter(adapter);

    }


}

Log.i("BOTON PULSADO", "HOLA"); //Enviamos mensajes al Log.

Adapters: https://developer.android.com/reference/android/widget/Adapter

Ahora al darle click a uno de los invitados, nos moveremos a otra Activity.

Priemro creamos esa segunda actividad de nuestro proyecto:

Dejar que el “gradle” acabe!

Constraint layouts: centran todo!

Eliminar presion cambiar presion hacia fuera. Con los muelles.

Se ha de crear objeto INTENT. El INTENT, ¿qué quieres hacer? ¿donde quieres ir? ¿qué datos quieres llevar? Es una especie de objeto que también tiene unos datos.
1) Crear 2) Lanzar
new Intent
StartActivity(i)

Para pasar de actividad A a B

Pueden ser implicitos o explicitos

Este va a ser explicito: especificamos destino, vamos a llamar a otra actividad determinada que ya conocemos.

Al dar al botón de flecha de volver del móvil, la segunda actividad se destruye. Ojo, también se destruye en memoria.

Ahora vamos a pasar datos de A a B


Enviamos dato:

ejemplo metodo sobrecargado: con el que enviamos el dato de A a B

recogemos dato enviado:


DEBUG:

Breakpoints:

Cçodigo final hasta hoy:

package com.sergioguillen.android.listadeinvitados;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

import java.util.ArrayList;

public class InvitadosActivity extends AppCompatActivity {

    private Button btnBotonLista;
    private Button botonMostrarLista;



    ArrayList<String> invitados = null;
    ArrayAdapter<String> adapter = null;









    private Button getBtnBotonLista;
    //Notacion "Camel Case y con nombres descriptivos)
    ListView listaInvitados;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_invitados);



        //super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_invitados);

        invitados = new ArrayList<>();
        //añadir tres invitados
        invitados.add("Pepe");
        invitados.add("Maria");
        invitados.add("Josefa");


        listaInvitados = findViewById(R.id.listaInvitados);
        btnBotonLista = findViewById(R.id.button);



        View.OnClickListener listener = new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                System.out.println("BOTON PULSADO");
                Log.i("BOTON PULSADO", "HOLA");
                listaInvitados.setAdapter(adapter);

            }

        };

        //asociamos listener
         btnBotonLista.setOnClickListener(listener);



        //array adapter
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, invitados);
        //listaInvitados.setAdapter(adapter);
        //this.listaInvitados.setAdapter(adapter);






        //captura listener elemento lista
        AdapterView.OnItemClickListener itemListener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Log.i("INVIT_APP", "Item lista pulsado");

                Intent i = new Intent(InvitadosActivity.this,InfoActivity.class);


                //obtener nombre de invitado seleccionado
                String nombre = invitados.get(position);
                i.putExtra("data", nombre);
                startActivity(i);
            }
        };

        //asociamos el listener
        listaInvitados.setOnItemClickListener(itemListener);


    }


}

Deja un comentario