Apéndice B:
Código Fuente
Código Fuente
Java
Inicio.java package com.example.appieee; import java.io.FileInputStream; public class Inicio extends Activity { private ProgressBar pbCar;//Declaramos la barra de progreso private Carga tarea;//Declaramos las tareas que vamos a realizar en segundo plano static boolean haHabidoConexion = false; //variable estática para poder acceder a ella desde cualquier lugar //que nos dira en todo momento si hemos descargado algo private String fileDir;//String que llevara la ruta de la memoria interna private Leer leerFicheros; // Declaramos objeto de la clase Leer private FileInputStream fin; // Declaramos variable para datos entrantes private ArrayList<String> menu = null; // Lista de objetos tipo String. Sirve para leer el archivo menu.xml y guardar todas sus etiquetas private ArrayList<Mapa> mapas = null; // Lista de objetos tipo String. Sirve para leer el archivo mapa.xml y guardar todas sus etiquetas private ArrayList<Noticia> noticias = null; // Array al que le pasamos objetos del tipo Noticia private String[] archivos={"foto0.png","foto1.png","foto2.png","foto3.png","foto4.png", "foto5.png","foto6.png","foto7.png","foto8.png","foto9.png"}; // Array con 10 fotos private boolean conexionExiste; private boolean conexion; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.inicio); pbCar = (ProgressBar) findViewById(R.id.pbCarga); fileDir = getFilesDir().toString(); // Da la ruta hacia la memoria interna donde queremos ubicar el archivo y lo transforma en un String // ///////////////////////////////////////////////////// // Para leer el archivo descargado conexion.xml leerFicheros = new Leer(); // Creamos objeto leerFicheros try { fin = openFileInput("conexion.xml"); // Asignamos a la variable fin el archivo conexion.xml conexionExiste=true; } catch (FileNotFoundException e1) { e1.printStackTrace(); } // /////////////////////////////////////////////////// ////////////////////////////////////////////////// //Comprobamos que exista conexión if(isOnline()){ tarea = new Carga();//Creamos un objeto tipo carga tarea.execute();//Ejecutamos las tareas en segundo plano haHabidoConexion = true; //Si hemos tenido conexión nuestra variable se pone a true para no tener que descargar más si no hay internet }else if(conexionExiste){ // colocamos con el método el archivo que queremos leer
Inicio.java leerFicheros.setLeerArchivos(fin); // Pasamos a leerFicheros mediante el método setLeerArchivos el archivo conexion.xml conexion = leerFicheros.getLeerConexion(); // con este método devolvemos un booleano que indicará si ya se hizo una conexion en caso de no tenerla ahora if(conexion){//Si lo que tenemos en conexion es true pasaremos al menú principal Intent intent = new Intent("com.example.appieee.MENU"); startActivity(intent); }else{ Toast.makeText(this, "La primera vez es necesaria conexión a internet", Toast.LENGTH_LONG).show(); finish();//terminamos la aplicación } }else{//Si no existe sale un Toast diciendo que nos hace falta internet Toast.makeText(this, "La primera vez es necesaria la conexión a internet", Toast.LENGTH_LONG).show(); finish();//terminamos la aplicación } ////////////////////////////////////////////////// }//Cierre de la activity // //////////////////////////////////////////// // Esta función duerme el hilo principal 1 segundo private void tareaLarga() { try { Thread.sleep(1000);//Dormir el proceso un segundo para dar tiempo a la descarga de cada .XML } catch (InterruptedException e) { e.printStackTrace(); } } // ////////////////////////////////////////////// // /////////////////////////////////////////////// // Esta función comprueba que hay internet public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnected()) { return true; } return false; } // //////////////////////////////////////////////// ////////////////////////////////////////////////// //Función que leerá el menú private void leerMenu(){ try { fin = openFileInput("menu.xml"); // Asignamos a la variable fin el archivo menu.xml } catch (FileNotFoundException e1) { e1.printStackTrace(); } Page 2
Inicio.java // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // Pasamos a leerFicheros mediante el método setLeerArchivos el archivo menu.xml // con este método devolvemos una lista de String que colocaremos en menu menu = leerFicheros.getLeerMenuXML(); // Leemos el archivo pasado (menu.xml) y devolvemos una lista con el contenido del xml ( url,pngs, etc) descargarOtrosDocumentos(menu); //Este método que llamamos, servirá para poder descargar los demás .XML } ////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////// // Método que sirve para descargar otros documentos private void descargarOtrosDocumentos(ArrayList<String> menu){ int i; // Declaración de variable para utilizar contador String[] archivos={"nombre","siglas","logo.png","noticiasYavisos.xml","programa.xml", "textos.xml","mapa.xml","informacion.xml","contacto.xml"}; // Array con el nombre que le vamos a poner a los archivos descargados for(i=2;i<=8;i++){ // Recorrido para la descarga de todos los .XML Bajada baja = new Bajada(); //Creamos un objeto bajada para poder acceder sus métodos baja.setGuardaXML(menu.get(i).toString(), archivos[i], fileDir); //Accedemos al método que descargará los distintos .XML //menu. get(i).toString();//Esta URL será la que cambie e irá descargando los distintos XML //arch ivos[i]; // En la posición 2 de datos vamos metiendo los nombres que les vamos a adjudicar a los archivos que vayamos descargando, asociados a las url que estamos sacando de menu.xml } descargaSitio();//Nos dirigimos a descargar la imagen del sitio } ////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// //Descarga el mapa del sitio private void descargaSitio(){ // ///////////////////////////////////////////////////// // Esto es para leer el XML de mapa try { fin = openFileInput("mapa.xml"); } catch (FileNotFoundException e1) { // TODO Auto‐generated catch block e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en menú mapas = leerFicheros.leerMapaXML(); // ///////////////////////////////////////////////////
Inicio.java // ///////////////////////////////////////////////////// // Esto es para Descargar el mapa del sitio y guardarlo en memoria interna Bajada baja = new Bajada(); //Creamos un objeto bajada para poder acceder sus métodos baja.setGuardaXML(mapas.get(0).getSitio(), "sitio.png", fileDir); //Accedemos al método que descargará los distintos .XML //mapas.get(0).getSitio();//Este método nos devolverá una URL que nos servirá para descargar la imagen del sitio //"sitio.png"; // Es el nombre que pondremos al archivo descargado //filedir; //Ruta en la que acabará nuestro archivo descargaFotos(); } //////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// //Descarga las fotos de las noticias private void descargaFotos(){ int i=0; //Contador para las fotos // ///////////////////////////////////////////////////// // Esto es para leer el XML de noticias leerFicheros = new Leer(); //Creamos el objeto leerFicheros try { fin = openFileInput("noticiasYavisos.xml"); //Abrimos el archivo noticiasYavisos que descargamos en App IEEE y pasamos la información a fin } catch (FileNotFoundException e1) { e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en // noticias noticias = leerFicheros.leerNoticiaXML(); // /////////////////////////////////////////////////// //Este for recorrera la lista de noticias y noticia siguiente será cada noticia individualmente para que podamos acceder a ellas for (Noticia noticiaSiguiente: noticias) { if(noticiaSiguiente.getUrlImage()!=null){// Si de la entrada la url no es nula tiene que hacer lo siguiente Bajada baja = new Bajada(); //Creamos un objeto bajada para poder acceder sus métodos baja.setGuardaXML(noticiaSiguiente.getUrlImage(), archivos[i], fileDir); //Accedemos al método que descargará las distintas fotos //noticiaSiguiente.getUrlImage();//Este método nos devolverá una URL que nos servirá para descargar la imagen del sitio //archivos[i]; // Es el nombre que pondremos al archivo descargado //filedir; //Ruta en la que acabará nuestro archivo // i++; //Incremento del contador Page 4
Inicio.java } } try { habilitandoConexion(); } catch (IOException e) { // TODO Auto‐generated catch block e.printStackTrace(); } } /////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// //Descargará un xml en el que pondrá que hemos tenido conexión private void habilitandoConexion() throws IOException{ //Creamos un fichero en la memoria interna OutputStreamWriter fout = new OutputStreamWriter( openFileOutput("conexion.xml", Context.MODE_PRIVATE)); StringBuilder sb = new StringBuilder(); // Construimos el XML sb.append("<conexion>"); sb.append("" + "true" + ""); sb.append("</conexion>"); //Escribimos el resultado a un fichero fout.write(sb.toString()); fout.close(); } /////////////////////////////////////////////////////////////////// //Esta es la carga que realizaremos en segundo plano private class Carga extends AsyncTask<Void, Integer, Boolean> { protected void onPreExecute() { pbCar.setMax(100);//Poner la progressBar en un tope de 100 pbCar.setProgress(0);//Poner que la progressBar que empiece en 0 } @Override protected Boolean doInBackground(Void... params) { // TODO Auto‐generated method stub Bajada baja = new Bajada(); //Creamos un objeto bajada para poder acceder sus métodos baja.setGuardaXML("http://danielsilva.tk/corporativo/media/menu.xml", "menu.xml", fileDir); //Accedemos al método que descargará el menú leerMenu(); for (int i = 1; i <= 5; i++) {
Inicio.java tareaLarga(); // Este es el retardo para simular una carga publishProgress(i * 10); //Esto para que la barra de carga vaya actualizandose if (isCancelled()) break; } return true; } @Override protected void onProgressUpdate(Integer... values) { int progreso = values[0].intValue(); pbCar.setProgress(progreso);//Actualizado el progreso de la progressBar } @Override protected void onPostExecute(Boolean result) { if (result) Toast.makeText(getApplicationContext(), "Actualización realizada", Toast.LENGTH_LONG).show(); Intent intent = new Intent("com.example.appieee.MENU"); startActivity(intent);//Una vez mostrado el toast, pasamos a la activity AppIeee } @Override protected void onCancelled() { Toast.makeText(getApplicationContext(), "¡Tarea cancelada!", Toast.LENGTH_SHORT).show(); } } } Page 6
AppIEEE.java package com.example.appieee; import java.io.File; public class AppIEEE extends Activity { // Declaramos variables para utilizarlas posteriormente private ListView lstOpciones; private TextView lvNomConfe; private TextView lvSigConfe; private ImageView ivLogo; private Leer leerFicheros; // Declaramos objeto de la clase Leer private ArrayList<String> menu = null; // Lista de objetos tipo String. Sirve para leer el archivo menu.xml y guardar todas sus etiquetas private FileInputStream fin; // Declaramos variable para datos entrantes // Método principal que se ejecuta con la creación de la Main Activity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_app_ieee); // Tomamos el ContenView de // los recursos del layout // que se llama // activity_app_ieee // Relacionamos el código java con la parte gráfica de los xml lvNomConfe = (TextView) findViewById(R.id.tvNombreConfe); lvSigConfe = (TextView) findViewById(R.id.tvSiglasConfe); ivLogo = (ImageView) findViewById(R.id.tvImagenConfe); //BLOQUES DE FUNCIONAMIENTO // ///////////////////////////////////////////////////// // Para leer el archivo descargado menu.xml leerFicheros = new Leer(); // Creamos objeto leerFicheros try { fin = openFileInput("menu.xml"); // Asignamos a la variable fin el archivo menu.xml } catch (FileNotFoundException e1) { e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // Pasamos a leerFicheros mediante el método setLeerArchivos el archivo menu.xml // con este método devolvemos una lista de String que colocaremos en // menu menu = leerFicheros.getLeerMenuXML(); // Leemos el archivo pasado (menu.xml) y devolvemos una lista con el contenido del xml ( url,pngs, etc) // /////////////////////////////////////////////////// // /////////////////////////////////////////////////// // Colocamos en la vista el nombre de la conferencia y las siglas de la conferencia lvNomConfe.setText(menu.get(0));//Aquí asociamos el nombre desde la lista de menú lvSigConfe.setText(menu.get(1));//y aquí las siglas
AppIEEE.java // /////////////////////////////////////////////////// // ///////////////////////////////////////////////////// // Leemos la imagen o logo del menu File filePath = getFileStreamPath("logo.png"); // Creamos variable filePath del tipo File para guardar la ruta del archivo logo.png ivLogo.setImageDrawable(Drawable.createFromPath(filePath.toString())); // Para colocar la imagen en el image View // /////////////////////////////////////////////////// lstOpciones = (ListView) findViewById(R.id.lvOpciones); // Para // encontrar el // elemento // ListView // declarado // anteriormente // Este adaptador coge la lista del menú de un XML lleno de String el // String se llama "valores menu" el XML // se llama "xml_menu" y se encuentra en "res/values/xml_menu.xml" ArrayAdapter<CharSequence> adaptador = ArrayAdapter.createFromResource( this, R.array.valoresMenu, android.R.layout.simple_list_item_1); // Adaptador que adapta a un listView los elementos que queremos mostrar lstOpciones.setAdapter(adaptador); // Asignamos el ArrayAdapter // adaptador al ListView lstOpciones // mediante el método setAdapter() // Hacemos uso del método setOnItemClickListener, que utilizaremos para // clickar las distintas opciones del menú principal lstOpciones.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> a, View v, int posicion, long id) { // Vamos a utilizar el int posición para saber el elemento que vamos a seleccionar del listView // Generamos un switch para actuar ante la pulsación de los // distintos items que componen el ListView, al pasarle la // variable posicion switch (posicion) { case 0: Intent intent0 = new Intent("com.example.appieee.NOTICIAS"); startActivity(intent0); break; case 1: Intent intent1 = new Intent("com.example.appieee.PROGRAMA"); startActivity(intent1); break; case 2: Intent intent2 = new Intent("com.example.appieee.TEXTOS"); startActivity(intent2); Page 2
AppIEEE.java break; case 3: Intent intent3 = new Intent("com.example.appieee.MAPA"); startActivity(intent3); break; case 4: Intent intent4 = new Intent("com.example.appieee.INFORMACION"); startActivity(intent4); break; case 5: Intent intent5 = new Intent("com.example.appieee.CONTACTO"); startActivity(intent5); break; } } }); } // Mostrar submenu cuando le damos a la tecla de submenu en el móvil @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.app_ieee, menu); return true; } }
MostrarNoticias.java package com.example.appieee; import java.io.File; public class MostrarNoticias extends Activity { // Declaramos variables para utilizarlas posteriormente private ListView lista; private Leer leerFicheros; private ArrayList<Noticia> noticias = null; // Array al que le pasamos objetos del tipo Noticia private FileInputStream fin; private CharSequence textoDescripcion; // El CharSequence es un tipo de String private CharSequence textoTitulo; private Dialog d; // Variable de tipo Dialog @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.listado); // Decimos la vista que vamos a utilizar // ///////////////////////////////////////////////////// // Esto es para leer el XML de noticias leerFicheros = new Leer(); //Creamos el objeto leerFicheros try { fin = openFileInput("noticiasYavisos.xml"); //Abrimos el archivo noticiasYavisos que descargamos en App IEEE y pasamos la información a fin } catch (FileNotFoundException e1) { e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en // noticias noticias = leerFicheros.leerNoticiaXML(); // /////////////////////////////////////////////////// lista = (ListView) findViewById(R.id.ListView_listado); // Definimos la lista que se encuentra dentro de la interfaz gráfica y la controlamos en java mediante la variable lista // Vamos a definir mediante un adaptador la información que vamos a meter en el listview lista.setAdapter(new Lista_adaptador(this, R.layout.entrada, (ArrayList<?>) noticias) {// Método setAdapter para introducir información a la lista. Dentro definimos un nuevo adaptador, definido con los parámetros:contexto, vista y la información en forma de lista de noticias // Para poner el Título, la Descripción y la imagen en cada una de las entradas de noticia @Override Page 1
MostrarNoticias.java public void onEntrada(Object entrada, View view) { // TODO Auto‐generated method stub if (entrada != null) {// Si entrada no es null TextView texto_superior_entrada = (TextView) view .findViewById(R.id.textView_superior);// Creamos un TextView if (texto_superior_entrada != null) // Si texto superior de entrada no es null texto_superior_entrada.setText(((Noticia) entrada) .getTitulo());// entonces introducimos el Título de la noticia en Texto Superior Entrada TextView texto_inferior_entrada = (TextView) view .findViewById(R.id.textView_inferior);// Creamos un TextView if (texto_inferior_entrada != null)// Si texto inferior de entrada no es null texto_inferior_entrada.setText(((Noticia) entrada) .getDescripcion());// entonces introducimos la Descripción de la noticia en Texto Inferior Entrada // ///////////////////////////////////////////////////// // Para leer la imagen y ponerla en la noticia correspondiente ImageView imagen_entrada = (ImageView) view .findViewById(R.id.imageView_imagen);// Creamos imagen_entrada y la asociamos con imageView del xml entrada if (imagen_entrada != null){// Si la imagen de entrada no es null if(((Noticia) entrada).getUrlImage()!=null){// Si de la entrada la url no es nula tiene que hacer lo siguiente File filePath = getFileStreamPath(((Noticia) entrada).getNumeroFoto()); // Pasamos el archivo que queremos leer, devolviendo una ruta imagen_entrada.setImageDrawable(Drawable.createFromPath(filePath.t oString())); // pasamos la ruta y la imagen la colocamos en imagen_entrada } else{ ////////////////////////////////////////////////////////////////////// ///////// //Si fuese null le asignamos una imagen por defecto que tenemos en los recursos imagen_entrada.setImageResource(R.drawable.noticias); //Mostramo s la imagen que se encuentra al lado de la información util } } } } }); lista.setOnItemClickListener(new OnItemClickListener() { // Dar funcionalidad al clickar @Override public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) { // Al método onItemClick le pasamos un adaptador, una vista, una posición y un identificador Noticia elegida = (Noticia) pariente // Creamos un objeto Noticia llamada elegida .getItemAtPosition(posicion); // Metemos en elegida el objeto de tipo noticia que seleccionemos de la lista según su posición
MostrarNoticias.java textoTitulo = elegida.getTitulo();// En este String metemos el Título de la noticia elegida textoDescripcion = elegida.getDescripcion(); // En este String metemos la Descripción de la noticia elegida d = crearDialogoNoticia();// LLamamos al método crearDialogoNoticia (ver debajo), que nos va a devolver un diálogo que se va a meter en d d.show(); // mostramos el diálogo } }); } private Dialog crearDialogoNoticia() {// Para crear diálogo noticia AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(textoTitulo); builder.setMessage(textoDescripcion); builder.setPositiveButton("OK", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); return builder.create(); } } Page 3
MostrarPrograma.java package com.example.appieee; import java.io.FileInputStream; public class MostrarPrograma extends Activity{ private ListView lista; private Leer leerFicheros; private ArrayList<Programa> programas = null; private FileInputStream fin; private String [] listaDeVerdad; private Dialog d; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.listado); // ///////////////////////////////////////////////////// // Esto es para leer el XML de programa leerFicheros = new Leer(); try { fin = openFileInput("programa.xml"); } catch (FileNotFoundException e1) { // TODO Auto‐generated catch block e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en // menu programas = leerFicheros.leerProgramaXML(); // /////////////////////////////////////////////////// lista = (ListView) findViewById(R.id.ListView_listado); lista.setAdapter(new Lista_adaptador(this, R.layout.entrada, (ArrayList<?>) programas) { @Override public void onEntrada(Object entrada, View view) { // TODO Auto‐generated method stub if (entrada != null) { TextView texto_superior_entrada = (TextView) view .findViewById(R.id.textView_superior); if (texto_superior_entrada != null) texto_superior_entrada.setText(((Programa) entrada) .getFecha()); TextView texto_inferior_entrada = (TextView) view .findViewById(R.id.textView_inferior); if (texto_inferior_entrada != null) texto_inferior_entrada.setText(((Programa) entrada) .getTema()); ImageView img= (ImageView)view.findViewById(R.id.imageView_imagen);
MostrarPrograma.java img.setImageResource(R.drawable.programa); //Mostramos la imagen que se encuentra al lado del programa } } }); lista.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) { Programa elegida = (Programa) pariente .getItemAtPosition(posicion); listaDeVerdad= elegida.getLista(); d = crearDialogoSeleccion(); d.show(); } }); } private Dialog crearDialogoSeleccion(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Eventos programados"); builder.setItems(listaDeVerdad, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Log.i("Dialogos", "Opción elegida: " + listaDeVerdad[item]); } }); return builder.create(); } } Page 2
MostrarTextos.java package com.example.appieee; import java.io.FileInputStream; public class MostrarTextos extends Activity{ private ListView lista; private Leer leerFicheros; private ArrayList<Texto> textos = null; private FileInputStream fin; private CharSequence textoDescripcion; private CharSequence textoTitulo; private Dialog d; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.listado); // ///////////////////////////////////////////////////// // Esto es para leer el XML de textos leerFicheros = new Leer(); try { fin = openFileInput("textos.xml"); } catch (FileNotFoundException e1) { // TODO Auto‐generated catch block e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en // menu textos = leerFicheros.leerTextoXML(); // /////////////////////////////////////////////////// lista = (ListView) findViewById(R.id.ListView_listado); lista.setAdapter(new Lista_adaptador(this, R.layout.entrada, (ArrayList<?>) textos) { @Override public void onEntrada(Object entrada, View view) { // TODO Auto‐generated method stub if (entrada != null) { TextView texto_superior_entrada = (TextView) view .findViewById(R.id.textView_superior); if (texto_superior_entrada != null) texto_superior_entrada.setText(((Texto) entrada) .getTitulo()); TextView texto_inferior_entrada = (TextView) view .findViewById(R.id.textView_inferior); if (texto_inferior_entrada != null) texto_inferior_entrada.setText(((Texto) entrada) .getAutor());
MostrarTextos.java ImageView img= (ImageView)view.findViewById(R.id.imageView_imagen); img.setImageResource(R.drawable.textos_varios); //Mostramos la imagen que se encuentra al lado de los textos } } }); lista.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) { Texto elegida = (Texto) pariente .getItemAtPosition(posicion); textoTitulo = elegida.getTitulo(); textoDescripcion = elegida.getDescripcion(); d = crearDialogoTexto(); d.show(); } }); } private Dialog crearDialogoTexto() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(textoTitulo); builder.setMessage(textoDescripcion); builder.setPositiveButton("OK", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); return builder.create(); } } Page 2
MainMapa.java package com.example.appieee; import android.app.Activity; public class MainMapa extends Activity { // Declaramos elementos para utilizarlos posteriormente private ListView lstOpciones; // Método principal que se ejecuta con la creación de la Activity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainmapa); // Tomamos el ContenView de // los recursos del layout // que se llama // activity_app_ieee lstOpciones = (ListView) findViewById(R.id.lvOpciones); // Para // encontrar el // elemento // ListView // declarado // anteriormente // Mostraremos la lista de elementos del menú ListView final String[] datos = new String[] { "Mapa del Sitio", "Mapa de la Ciudad (sólo online)"}; // Definiremos el array con los elementos de // prueba, lo llamaremos datos ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, datos); // Creamos un // adaptador de // tipo // ArrayAdapter // llamado // adaptador lstOpciones.setAdapter(adaptador); // Asignamos el ArrayAdapter // adaptador al ListView lstOpciones // mediante el método setAdapter() // Hacemos uso del método setOnItemClickListener, que utilizaremos para clickar las distintas opciones del menú principal lstOpciones.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> a, View v, int posicion, long id) { // TODO Auto‐generated method stub
MainMapa.java //Generamos un switch para actuar ante la pulsación de los distintos items que componen el ListView, al pasarle la variable posicion switch (posicion) { case 0: Intent intent0 = new Intent("com.example.appieee.SITIO"); startActivity(intent0); break; case 1: Intent intent1 = new Intent("com.example.appieee.CIUDAD"); startActivity(intent1); break; } } }); } //Mostrar submenu cuando le damos a la tecla de submenu en el móvil @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.app_ieee, menu); return true; } } Page 2
Sitio.java package com.example.appieee; import java.io.File; public class Sitio extends Activity{ private ImageView imgView ; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.sitio); File filePath = getFileStreamPath("sitio.png"); imgView = (ImageView) findViewById(R.id.IvImagenMapa); imgView.setImageDrawable(Drawable.createFromPath(filePath.toString())); } }
Ciudad.java package com.example.appieee; import java.io.FileInputStream; public class Ciudad extends Activity { private Leer leerFicheros; private FileInputStream fin; private ArrayList<Mapa> mapas = null; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.ciudad); WebView wv = (WebView) findViewById(R.id.Wvwebview); // ///////////////////////////////////////////////////// // Esto es para leer el XML de mapa leerFicheros = new Leer(); try { fin = openFileInput("mapa.xml"); } catch (FileNotFoundException e1) { // TODO Auto‐generated catch block e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en // menu mapas = leerFicheros.leerMapaXML(); // /////////////////////////////////////////////////// // Activo JavaScript wv.getSettings().setJavaScriptEnabled(true); wv.setWebViewClient(new Callback()); WebSettings webSettings = wv.getSettings(); webSettings.setBuiltInZoomControls(true); wv.loadUrl(mapas.get(0).getCiudad()); // Con este método cogemos la url // del xml que nos apunta a la // guía michelin } // Para evitar que se nos abra el navegador al pinchar el enlace private class Callback extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView view, String url) { return (false); } } } Page 1
MostrarInformacion.java package com.example.appieee; import java.io.FileInputStream; public class MostrarInformacion extends Activity { // Declaramos elementos para utilizarlos posteriormente private ListView lista; private Leer leerFicheros; private ArrayList<Informacion> informaciones = null; private FileInputStream fin; private CharSequence textoMasInformacion; private CharSequence textoTitulo; private Dialog d; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.listado); // ///////////////////////////////////////////////////// // Esto es para leer el XML de noticias leerFicheros = new Leer(); try { fin = openFileInput("informacion.xml"); } catch (FileNotFoundException e1) { // TODO Auto‐generated catch block e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en // menu informaciones = leerFicheros.leerInformacionXML(); // /////////////////////////////////////////////////// lista = (ListView) findViewById(R.id.ListView_listado); lista.setAdapter(new Lista_adaptador(this, R.layout.entrada, (ArrayList<?>) informaciones) { @Override public void onEntrada(Object entrada, View view) { // TODO Auto‐generated method stub if (entrada != null) { TextView texto_superior_entrada = (TextView) view .findViewById(R.id.textView_superior); if (texto_superior_entrada != null) texto_superior_entrada.setText(((Informacion) entrada) .getTitulo()); TextView texto_inferior_entrada = (TextView) view .findViewById(R.id.textView_inferior); if (texto_inferior_entrada != null) texto_inferior_entrada.setText(((Informacion) entrada) .getDescripcion()); ////////////////////////////////////////////////////////////
MostrarInformacion.java //Asignamos la imagen en información ImageView img= (ImageView)view.findViewById(R.id.imageView_imagen); img.setImageResource(R.drawable.informacion_util); //Mostramos la imagen que se encuentra al lado de la información util } } }); lista.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) { Informacion elegida = (Informacion) pariente .getItemAtPosition(posicion); textoTitulo = elegida.getTitulo(); textoMasInformacion = elegida.getMasInformacion(); d = crearDialogoInformacion(); d.show(); } }); } private Dialog crearDialogoInformacion() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(textoTitulo); builder.setMessage(textoMasInformacion); builder.setPositiveButton("OK", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); return builder.create(); } } Page 2
MostrarContacto.java package com.example.appieee; import java.io.FileInputStream; public class MostrarContacto extends Activity{ // Declaramos elementos para utilizarlos posteriormente private ListView lista; private Leer leerFicheros; private ArrayList<Contacto> contactos = null; private FileInputStream fin; private String [] listaDeVerdad; private Dialog d; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto‐generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.listado); // ///////////////////////////////////////////////////// // Esto es para leer el XML de contactos leerFicheros = new Leer(); try { fin = openFileInput("contacto.xml"); } catch (FileNotFoundException e1) { // TODO Auto‐generated catch block e1.printStackTrace(); } // colocamos con el método el archivo que queremos leer leerFicheros.setLeerArchivos(fin); // con este método devolvemos una lista de String que colocaremos en // menu contactos = leerFicheros.leerContactoXML(); // /////////////////////////////////////////////////// lista = (ListView) findViewById(R.id.ListView_listado); lista.setAdapter(new Lista_adaptador(this, R.layout.entrada, (ArrayList<?>) contactos) { @Override public void onEntrada(Object entrada, View view) { // TODO Auto‐generated method stub if (entrada != null) { TextView texto_superior_entrada = (TextView) view .findViewById(R.id.textView_superior); if (texto_superior_entrada != null) texto_superior_entrada.setText(((Contacto) entrada) .getNombre()); TextView texto_inferior_entrada = (TextView) view .findViewById(R.id.textView_inferior); if (texto_inferior_entrada != null) texto_inferior_entrada.setText(((Contacto) entrada) .getEntidad());
MostrarContacto.java ImageView img= (ImageView)view.findViewById(R.id.imageView_imagen); img.setImageResource(R.drawable.contactos); //Mostramos la imagen que se encuentra al lado del contacto } } }); lista.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) { Contacto elegida = (Contacto) pariente .getItemAtPosition(posicion); listaDeVerdad= elegida.getLista(); d = crearDialogoSeleccion(); d.show(); } }); } private Dialog crearDialogoSeleccion(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Contacto"); builder.setItems(listaDeVerdad, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Log.i("Dialogos", "Opción elegida: " + listaDeVerdad[item]); } }); return builder.create(); } } Page 2
Noticia.java package com.example.appieee; public class Noticia { // Declaración de variables del objeto Noticia private String titulo; private String link; private String descripcion; private String guid; private String fecha; private String urlImage; private String numeroFoto; // Definimos métodos get public String getNumeroFoto() { return numeroFoto; } public void setNumeroFoto(String numeroFoto) { this.numeroFoto = numeroFoto; } public String getUrlImage() { return urlImage; } public String getTitulo() { return titulo; } public String getLink() { return link; } public String getDescripcion() { return descripcion; } public String getGuid() { return guid; } public String getFecha() { return fecha; } // Definimos métodos set public void setUrlImage(String urlImage) { this.urlImage = urlImage; } public void setTitulo(String t) { titulo = t; } public void setLink(String l) { link = l; } public void setDescripcion(String d) {
Noticia.java descripcion = d; } public void setGuid(String g) { guid = g; } public void setFecha(String f) { fecha = f; } } Page 2
Programa.java package com.example.appieee; public class Programa { //Declaramos variables private String fecha; private String tema; private String conferencia; private String ponentes; private int aux=0; // Variable auxiliar inicializada a 0 private String[] hor = new String [100]; // Declaración de Array de cadena de caracteres con valor máximo de 100 private String cadena; private String[] devolver; // Declaración de Array de cadena de caracteres sin valor definido //Definimos los métodos Get y Set public String getFecha() { return fecha; } public void setFecha(String fecha) { this.fecha = fecha; } public String getTema() { return tema; } public void setTema(String tema) { this.tema = tema; } public String getConferencia() { return conferencia; } public void setConferencia(String conferencia) { this.conferencia = conferencia; } public String getPonentes() { return ponentes; } public void setPonentes(String ponentes) { this.ponentes = ponentes; setCadena(); // Llamamos a setCadena } public void setCadena(){ cadena= conferencia+ "\n\n" +ponentes; hor[aux]=cadena; // Pasamos la cadena al array hor aux++; // Aumentamos en 1 el contador de aux } //Este método controla la lista para sólo mostrar los elementos que de verdad existen public String [] getLista(){ devolver = new String [aux]; //Inicilizamos devolver con la variable auxiliar, que le dice cuantos elementos queremos que haya en la lista for(int i=0;i<devolver.length;i++){ //Hace un recorrido en el array que se devolverá. devolver.lenght nos devuelve la dimensión del array if(hor[i]!=null){ // Controla que el array hor no sea nulo devolver[i]=hor[i]; // De no serlo el dato de hor pasa a devolver }
Programa.java } return devolver; //Devuelve devolver } } Page 2
Texto.java package com.example.appieee; public class Texto { // Definimos variables private String titulo; private String descripcion; private String autor; //Definimos métodos Get y Set public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getDescripcion() { return descripcion; } public void setDescripcion(String descripcion) { this.descripcion = descripcion; } public String getAutor() { return autor; } public void setAutor(String autor) { this.autor = autor; } }
Mapa.java package com.example.appieee; public class Mapa { // Definimos las variables private String sitio; private String ciudad; // Definimos métodos Get and Set public String getSitio() { return sitio; } public void setSitio(String sitio) { this.sitio = sitio; } public String getCiudad() { return ciudad; } public void setCiudad(String ciudad) { this.ciudad = ciudad; } } Page 1
Informacion.java package com.example.appieee; public class Informacion { //Definimos variables private String titulo; private String descripcion; private String masInformacion; //Definimso métodos Get y Set public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getDescripcion() { return descripcion; } public void setDescripcion(String descripcion) { this.descripcion = descripcion; } public String getMasInformacion() { return masInformacion; } public void setMasInformacion(String masInformacion) { this.masInformacion = masInformacion; } }
Contacto.java package com.example.appieee; public class Contacto { // Definimos variables private String nombre; private String entidad; private String direccion; private String email; private String telefonos; private String otraInformacion; private int aux=0; // Definimos variable auxiliar private String[] datos = new String [4]; // Creamos un vector llamado datos y lo inicializamos a 4 porque son los 4 datos que queremos que estén //Declaramos métodos Get y Set public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getEntidad() { return entidad; } public void setEntidad(String entidad) { this.entidad = entidad; } public String getDireccion() { return direccion; } public void setDireccion(String direccion) { this.direccion = direccion; datos[aux]=direccion; aux++; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; datos[aux]=email; aux++; } public String getTelefonos() { return telefonos; } public void setTelefonos(String telefonos) { this.telefonos = telefonos; datos[aux]=telefonos; aux++; } public String getOtraInformacion() { return otraInformacion; } public void setOtraInformacion(String otraInformacion) { this.otraInformacion = otraInformacion; datos[aux]=otraInformacion; Page 1
Contacto.java aux++; } public String [] getLista(){ //Creamos el método getLista return datos; } }
Bajada.java package com.example.appieee; import java.io.File; public class Bajada { @SuppressWarnings("unused") public void setGuardaXML(String pagina, String nombreArchivo, String fileDir) {//Este método descarga todos los archivos del programa try { URL url = new URL(pagina); // crea una nueva conexión HttpURLConnection urlConnection = (HttpURLConnection) url .openConnection(); urlConnection.connect();//conectamos //Creamos un nuevo fichero, especificamos la ruta y el nombre del archivo //con el que queremos salvar el archivo File file = new File(fileDir, nombreArchivo); //Esto será usado para escribir los datos descargados en el archivo que hemos creamos FileOutputStream fileOutput = new FileOutputStream(file); //Esto será usado para leer los datos desde internet InputStream inputStream = urlConnection.getInputStream(); //Variable para almacenar el total de bytes descargados int downloadedSize = 0; // creación del buffer... byte[] buffer = new byte[1024]; int bufferLength = 0; // usado para almacenar temporalmente el tamaño del buffer //ahora, lee el buffer de entrada y escribe el contenido en el archivo while ((bufferLength = inputStream.read(buffer)) > 0) { fileOutput.write(buffer, 0, bufferLength); downloadedSize += bufferLength; } //cierra la salida de datos cuando acabe fileOutput.close(); // por si hay errores } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } Page 1
Leer.java package com.example.appieee; import java.io.FileInputStream; public class Leer { private FileInputStream fin;//Este será nuestro archivo que leeremos private ArrayList<String> itemMenu; private String aux; public void setLeerArchivos(FileInputStream fin) {//Este método leerá el archivo que vayamos a leer this.fin = fin; } public ArrayList<String> getLeerMenuXML() { XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); while (event != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG && parser.getName().equals("menu")) { itemMenu = new ArrayList<String>(); aux = "menuAbierto"; }// cerramos el if de ITEM if (event == XmlPullParser.TEXT && parser.getText().trim().length() != 0 && aux.equals("menuAbierto")) { itemMenu.add(parser.getText()); } if (event == XmlPullParser.END_TAG && parser.getName().equals("menu")) { aux = "menuCerrado"; } event = parser.next(); }// cierre del while fin.close(); } catch (Exception e) { e.printStackTrace(); } // Devolvemos la lista de string return itemMenu; } public ArrayList<Noticia> leerNoticiaXML() { ArrayList<Noticia> sumaNoticias = new ArrayList<Noticia>(); Noticia noticiaActual = null; String titulo = null; int j=0; XmlPullParser parser = Xml.newPullParser();
Leer.java try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); while (event != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG && parser.getName().equals("item")) { // Creamos una nueva noticia noticiaActual = new Noticia(); }// cerramos el if de ITEM // control de que guardara la varible del titulo para saber cual // utilizamos en cada momento else if (event == XmlPullParser.START_TAG && parser.getName().equals("title")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("description")) { titulo = parser.getName(); }else if (event == XmlPullParser.START_TAG && parser.getName().equals("enclosure")) { for (int i = 0; i < parser.getAttributeCount(); i++) { if(parser.getAttributeName(i).equals("url")){ noticiaActual.setUrlImage(parser.getAttributeValue(i)); noticiaActual.setNumeroFoto("foto"+j+".png");//Para ponerle un nombre a las url que tienen foto j++; } } } if (event == XmlPullParser.TEXT && parser.getText().trim().length() != 0 && noticiaActual != null) { if (titulo.equals("title")) { noticiaActual.setTitulo(parser.getText()); titulo = ""; } else if (titulo.equals("description")) { noticiaActual.setDescripcion(parser.getText()); titulo = ""; } }// cierra el if de noticiaActual if (event == XmlPullParser.END_TAG && parser.getName().equals("item")) { // aqui añadimos la nueva noticia a la lista. sumaNoticias.add(noticiaActual); noticiaActual = null; } event = parser.next(); }// cierre del while fin.close(); } catch (Exception e) { e.printStackTrace(); Page 2
Leer.java } return sumaNoticias; } public ArrayList<Programa> leerProgramaXML() { ArrayList<Programa> sumaPrograma = new ArrayList<Programa>(); Programa programaActual = null; String titulo = null; XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); while (event != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG && parser.getName().equals("dia")) { // Creamos una nueva noticia programaActual = new Programa(); }// cerramos el if de ITEM // control de que guardara la varible del titulo para saber cual // utilizamos en cada momento else if (event == XmlPullParser.START_TAG && parser.getName().equals("fecha")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("tema")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("conferencia")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("ponentes")) { titulo = parser.getName(); } if (event == XmlPullParser.TEXT && parser.getText().trim().length() != 0 && programaActual != null) { if (titulo.equals("fecha")) { programaActual.setFecha(parser.getText()); titulo = ""; } else if (titulo.equals("tema")) { programaActual.setTema(parser.getText()); titulo = ""; } else if (titulo.equals("conferencia")) { programaActual.setConferencia(parser.getText()); titulo = ""; } else if (titulo.equals("ponentes")) { programaActual.setPonentes(parser.getText()); titulo = ""; } }// cierra el if de noticiaActual if (event == XmlPullParser.END_TAG && parser.getName().equals("dia")) {
Leer.java // aqui añadimos la nueva noticia a la lista. sumaPrograma.add(programaActual); programaActual = null; } event = parser.next(); }// cierre del while fin.close(); } catch (Exception e) { e.printStackTrace(); } return sumaPrograma; } public ArrayList<Texto> leerTextoXML() { ArrayList<Texto> sumaTexto = new ArrayList<Texto>(); Texto textoActual = null; String titulo = null; XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); while (event != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG && parser.getName().equals("textos")) { // Creamos una nueva noticia textoActual = new Texto(); }// cerramos el if de ITEM // control de que guardara la varible del titulo para saber cual // utilizamos en cada momento else if (event == XmlPullParser.START_TAG && parser.getName().equals("titulo")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("descripcion")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("autor")) { titulo = parser.getName(); } if (event == XmlPullParser.TEXT && parser.getText().trim().length() != 0 && textoActual != null) { if (titulo.equals("titulo")) { textoActual.setTitulo(parser.getText()); titulo = ""; } else if (titulo.equals("descripcion")) { textoActual.setDescripcion(parser.getText()); titulo = ""; } else if (titulo.equals("autor")) { Page 4
Leer.java textoActual.setAutor(parser.getText()); titulo = ""; } }// cierra el if de noticiaActual if (event == XmlPullParser.END_TAG && parser.getName().equals("textos")) { // aqui añadimos la nueva noticia a la lista. sumaTexto.add(textoActual); textoActual = null; } event = parser.next(); }// cierre del while fin.close(); } catch (Exception e) { e.printStackTrace(); } return sumaTexto; } public ArrayList<Mapa> leerMapaXML() { ArrayList<Mapa> sumaMapa = new ArrayList<Mapa>(); Mapa mapaActual = null; String titulo = null; XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); while (event != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG && parser.getName().equals("mapa")) { // Creamos una nueva noticia mapaActual = new Mapa(); }// cerramos el if de ITEM // control de que guardara la varible del titulo para saber cual // utilizamos en cada momento else if (event == XmlPullParser.START_TAG && parser.getName().equals("sitio")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("ciudad")) { titulo = parser.getName(); } if (event == XmlPullParser.TEXT && parser.getText().trim().length() != 0 && mapaActual != null) { if (titulo.equals("sitio")) { mapaActual.setSitio(parser.getText());
Leer.java titulo = ""; } else if (titulo.equals("ciudad")) { mapaActual.setCiudad(parser.getText()); titulo = ""; } }// cierra el if de noticiaActual if (event == XmlPullParser.END_TAG && parser.getName().equals("mapa")) { // aqui añadimos la nueva noticia a la lista. sumaMapa.add(mapaActual); mapaActual = null; } event = parser.next(); }// cierre del while fin.close(); } catch (Exception e) { e.printStackTrace(); } return sumaMapa; } public ArrayList<Informacion> leerInformacionXML() { ArrayList<Informacion> sumaInformacion = new ArrayList<Informacion>(); Informacion informacionActual = null; String titulo = null; XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); while (event != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG && parser.getName().equals("item")) { // Creamos una nueva noticia informacionActual = new Informacion(); }// cerramos el if de ITEM // control de que guardara la varible del titulo para saber cual // utilizamos en cada momento else if (event == XmlPullParser.START_TAG && parser.getName().equals("titulo")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("descripcion")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("mas_informacion")) { titulo = parser.getName(); } Page 6
Leer.java if (event == XmlPullParser.TEXT && parser.getText().trim().length() != 0 && informacionActual != null) { if (titulo.equals("titulo")) { informacionActual.setTitulo(parser.getText()); titulo = ""; } else if (titulo.equals("descripcion")) { informacionActual.setDescripcion(parser.getText()); titulo = ""; } else if (titulo.equals("mas_informacion")) { informacionActual.setMasInformacion(parser.getText()); titulo = ""; } }// cierra el if de noticiaActual if (event == XmlPullParser.END_TAG && parser.getName().equals("item")) { // aqui añadimos la nueva noticia a la lista. sumaInformacion.add(informacionActual); informacionActual = null; } event = parser.next(); }// cierre del while fin.close(); } catch (Exception e) { e.printStackTrace(); } return sumaInformacion; } public ArrayList<Contacto> leerContactoXML() { ArrayList<Contacto> sumaContacto = new ArrayList<Contacto>(); Contacto contactoActual = null; String titulo = null; XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); while (event != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG && parser.getName().equals("contacto")) { // Creamos una nueva noticia contactoActual = new Contacto(); }// cerramos el if de ITEM // control de que guardara la varible del titulo para saber cual // utilizamos en cada momento else if (event == XmlPullParser.START_TAG && parser.getName().equals("nombre")) { titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("entidad")) {
Leer.java titulo = parser.getName(); } else if (event == XmlPullParser.START_TAG && parser.getName().equals("direccion")) { titulo = parser.getName(); }else if (event == XmlPullParser.START_TAG && parser.getName().equals("email")) { titulo = parser.getName(); }else if (event == XmlPullParser.START_TAG && parser.getName().equals("telefonos")) { titulo = parser.getName(); }else if (event == XmlPullParser.START_TAG && parser.getName().equals("otra_informacion")) { titulo = parser.getName(); } if (event == XmlPullParser.TEXT && parser.getText().trim().length() != 0 && contactoActual != null) { if (titulo.equals("nombre")) { contactoActual.setNombre(parser.getText()); titulo = ""; } else if (titulo.equals("entidad")) { contactoActual.setEntidad(parser.getText()); titulo = ""; } else if (titulo.equals("direccion")) { contactoActual.setDireccion(parser.getText()); titulo = ""; }else if (titulo.equals("email")) { contactoActual.setEmail(parser.getText()); titulo = ""; }else if (titulo.equals("telefonos")) { contactoActual.setTelefonos(parser.getText()); titulo = ""; }else if (titulo.equals("otra_informacion")) { contactoActual.setOtraInformacion(parser.getText()); titulo = ""; } }// cierra el if de noticiaActual if (event == XmlPullParser.END_TAG && parser.getName().equals("contacto")) { // aqui añadimos la nueva noticia a la lista. sumaContacto.add(contactoActual); contactoActual = null; } event = parser.next(); }// cierre del while fin.close(); } catch (Exception e) { e.printStackTrace(); } return sumaContacto; } /////////////////////////////////////////////////////////////////////////////// Page 8
Leer.java //Este método nos devolverá verdadero o falso en caso de que en conexion.xml creado, ponga true public boolean getLeerConexion() { String aux=new String(); boolean resultado; XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(fin, "UTF‐8"); int event = parser.next(); if (event == XmlPullParser.START_TAG){ aux=parser.nextText().toString(); } fin.close(); } catch (Exception e) { e.printStackTrace(); } if(aux.equals("true")){ resultado = true; }else{ resultado = false; } return resultado; } }
Lista_adaptador.java package com.example.appieee; import java.util.ArrayList; /** * Adaptador de ListView universal * */ public abstract class Lista_adaptador extends BaseAdapter { private ArrayList<?> entradas; private int R_layout_IdView; private Context contexto; public Lista_adaptador(Context contexto, int R_layout_IdView, ArrayList<?> entradas) { super(); this.contexto = contexto; this.entradas = entradas; this.R_layout_IdView = R_layout_IdView; } @Override public View getView(int posicion, View view, ViewGroup pariente) { if (view == null) { LayoutInflater vi = (LayoutInflater) contexto.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R_layout_IdView, null); } onEntrada (entradas.get(posicion), view); return view; } @Override public int getCount() {//Método que devuelve cuantas entradas tenemos en la lista return entradas.size(); } @Override public Object getItem(int posicion) {//Devuelve el Item que queramos return entradas.get(posicion); } @Override public long getItemId(int posicion) {//Devuelve el identificador del Item return posicion; } /** Devuelve cada una de las entradas con cada una de las vistas a la que debe de ser asociada * @param entrada La entrada que será la asociada a la view. La entrada es del tipo del paquete/handler * @param view View particular que contendrá los datos del paquete/handler */ public abstract void onEntrada (Object entrada, View view); } Page 1
Código Fuente
XML
inicio.xml
<?xml version="1.0" encoding="utf‐8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="240dp" android:src="@drawable/logo_proyecto" /> <TextView android:id="@+id/tvCreador" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="18dp" android:gravity="center" android:text="@string/tvCreador" android:textAlignment="center" android:textStyle="bold" /> <ProgressBar android:id="@+id/pbCarga" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/tvCreador" android:layout_centerHorizontal="true" android:layout_marginBottom="74dp" /> </RelativeLayout> Page 1
activity_app_ieee.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/RelativeLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".AppIEEE" > <TextView android:id="@+id/tvNombreConfe" android:layout_width="290dp" android:layout_height="51dp" android:layout_alignParentLeft="true" android:layout_below="@+id/tvImagenConfe" android:text="@string/tvNombreConfe" android:textAlignment="center" android:textStyle="bold" android:gravity="center" android:textSize="@dimen/activity_vertical_margin" /> <ListView android:id="@+id/lvOpciones" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/tvNombreConfe" android:layout_marginBottom="16dp" > </ListView> <TextView android:id="@+id/tvSiglasConfe" android:layout_width="wrap_content" android:layout_height="51dp" android:layout_alignRight="@+id/tvNombreConfe" android:layout_toRightOf="@+id/tvImagenConfe" android:text="@string/tvSiglasConfe" android:textAlignment="center" android:textStyle="bold" android:gravity="center" android:textSize="@dimen/activity_vertical_margin" /> <ImageView android:id="@+id/tvImagenConfe" android:layout_width="100dp" android:layout_height="200dp" android:layout_alignBottom="@+id/tvSiglasConfe" android:layout_alignLeft="@+id/tvNombreConfe" android:src="@drawable/emc2013" /> </RelativeLayout>