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.

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); } }