Clase Final->No puede heredar más?
Intent implícito->¿Qué quiero hacer y con qué dato?
¿Qué aplicación que recibe una data de la forma “tel:93674995802” y queremos hacer un DIAL el sistema operativo te lleva hasta la activity que sabe tratar con este tipo de opciones.
Intent explícito->habitualmente es para el movimiento para dentro de la aplicación. Estoy en A y quiero ir a B. Le marcamos un destino conocido, con el nombre de la clase: B.class
Parámetro action:VALOR y data:VALOR
Intent chooser -> Selector de con qué aplicacion quieres abrir eso.
Objetivos de hoy: el array de strings, pasarlo a objetos. Primero a clase y luego a objetos.
Ejercicio: app de compra de entradas.
Ejercicio: Listview y haga conexion a internet y haga intercambio JSON JavaScript Object Notation. Habrá conectividad hacia afuera, y necesitan un permiso: el de internet. En el Manifest se declaran los permisos que necesita tu aplicación.







Si hacemos CTRL+D en una linea, la duplicamos:

alt+insert:



import es.pue.android.listadeinvitados.model.* cogeria todo

invitados = new ArrayList<>(); //añadir tres invitados invitados.add(new Invitado("Pepe", "1")); invitados.add(new Invitado("Maria", "2")); invitados.add(new Invitado("Josefa", "3"));
Overriding: sobre-escritura de los métodos de la clase, siempre que haya una relacion de herencia.
Todas las clases siempre heredan de object.



OJO, ha que hacer esto eh!!!:

intents inplícitos:
constructor por defecto: aquel que no lleva parámetros

objeto uri= uniform resource indicator
intent.setData(Uri.parse(telefono))
public void llamarInvitado(View view) { //intent implicito hacia pp telefonia android Log.i("INVIT_APP",telefono); Intent intent = new Intent(); //implícito intent.setAction(Intent.ACTION_DIAL); //Qué hacer intent.setData(Uri.parse("tel:" + telefono)); //tel:9354354387 startActivity(intent); }
Ahora cambiaremos la accion: en lugar de DIAL, CALL:
intent.setAction(Intent.ACTION_CALL);
PEta por tema de permisos hay que añadrir try y catch SecurityException:
Log i = informacion
Log e = error
public void llamarInvitado(View view) {
//intent implicito hacia pp telefonia android
Log.i("INVIT_APP",telefono);
Intent intent = new Intent(); //implícito
intent.setAction(Intent.ACTION_CALL); //Qué hacer
intent.setData(Uri.parse("tel:" + telefono)); //tel:9354354387
try {
startActivity(intent);
} catch (SecurityException sex){
Log.e("InfoActivity", "Falta permiso de llamada");
} catch (Exception ex){
Log.e("InfoActivity","Error general");
}
}
“Toast” para informar al usuario: una especie de globito de informacion:
“Poner literales”: todos los mensajes, ponerlos en Strings como variables, para internacionalizacion de la App
try { startActivity(intent); } catch (SecurityException sex){ Log.e("InfoActivity", "Falta permiso de llamada"); Toast.makeText(this, "Verifique que tiene permiso de llamada", Toast.LENGTH_LONG).show(); } catch (Exception ex){ Log.e("InfoActivity","Error general"); }
Declararemos un permiso en el AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sergioguillen.android.listadeinvitados"> <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
objet:T -> tipo concreto





Creamos el nuevo layout y lo personalizamos:


decoradores, @NonNull, no nulo, no permite que le pases un nulo, si le pasas un nulo, no te deja compilar:

notacion Landa de Java (recortada), con flechita,c aracteristica de Java8 en adelante





Esto se ha de hacer, siempre que queramos enviar objetos (con strings no hace falta lo de Parcerable)

Solucion chapucera:
poner esto como public:

y usar InvitadosActivity.INVITADO
BEST PRACTICE: crear clase constantes


Android Profiler:

ViewHolder – patrón ViewHolder -> Mirar en la documentación
Proyecto: una aplicación para comprar entradas
Compra entradas App
Juego? ->Qué juego queremos – Pista: objeto lista desplegable llamado spinner
Combinar spinner con item_click
Cuántas entradas quieres?
Resultado: Euros.
PRecio entrada x juego: FIJO o HardCoded
2a fase:
Tipo Entrada: Adulto o Infantil

Códigos fuente del Proyecto “ListaInvitados” (código de el profesor Ricardo):
ListaInvitados v1
ListaInvitados Final
new values resource file y creamos una Lista de elementos no volátiles
<string-array name=”lista”>
<item>Tiro arco</item>
<item>Jabalina</item>
<item>Martillo</item>
Y esto lo usamos en el spinner, para leer la lista