ListView para mostrar el resultado

Siguiendo con el ejemplo de parsear un documento xml, aplicación XMLParser, una vez que hemos establecido la conexión web, obtenido el texto xml a parsear y extraído los nodos en los que estamos interesado, el siguiente paso es mostrar al usuario de una manera amigable los datos. Para ello usamos un ListView.

  1. Creamos la clase Adaptador_xml la cual extiende a ArrayAdapter. En ella definimos el layout asociado y los datos que en él se insertarán (nombre, cantidad, precio e imagen asociada en función de la temporada del producto).
    package com.example.xmlparser;
    
    import android.app.Activity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class Adaptador_xml extends ArrayAdapter<String> {
    	Activity context;
    	private final String[] datos;
    
    	public Adaptador_xml(Activity context, String[] datos) {
    		super(context, R.layout.listado_annexo, datos);
    		this.context = context;
    		this.datos = datos;
    	}
    
    	public View getView(int position, View convertView, ViewGroup parent) {
    
    		// Añadimos el xml "listado_annexo" al que estamos trabajando
    		LayoutInflater inflater = context.getLayoutInflater();
    		View item = inflater.inflate(R.layout.listado_annexo, null);
    
    		// Recogemos los datos seleccionados por el usuario
    		String s = datos[position];
    		String[] datosindividuales = s.split("-");
    
    		TextView TituloProducto = (TextView) item
    				.findViewById(R.id.TituloProducto);
    		TituloProducto.setText(datosindividuales[1]);
    
    		TextView SubTituloCantidad = (TextView) item
    				.findViewById(R.id.SubTituloCantidad);
    		SubTituloCantidad.setText(datosindividuales[2] + " unidades");
    		
    		TextView SubTituloPrecio = (TextView) item
    				.findViewById(R.id.SubTituloPrecio);
    		SubTituloPrecio.setText(datosindividuales[3] + " euros");
    
    		// Definimos la imagen a mostrar en función de la temporada del producto
    		ImageView imageView = (ImageView) item.findViewById(R.id.icono);
    		if (s.endsWith("verano")) {
    			imageView.setImageResource(R.drawable.verano);
    		} else if (s.endsWith("invierno")) {
    			imageView.setImageResource(R.drawable.invierno);
    		} else {
    			imageView.setImageResource(R.drawable.vacio);
    		}
    
    		return (item);
    	}
    }
    
  2. En la clase Resultado_parsear creamos una instancia del ListView y añadimos los datos parseados.
    if (consulta[0] != "0-0-0-0-0") {
    	android.util.Log.v("Parser XML", "Hay datos en el nodo");
    	// Creamos una instancia del listView del xml
    	final ListView list = (ListView) findViewById(R.id.ListadoProductos);
    	// Damos forma a los elmentos que aparecerán en nuestro listado
    	// con la clase Adaptador_xml
    	Adaptador_xml adap_xml = new Adaptador_xml(this, consulta);
    	list.setAdapter(adap_xml);
    } else {
    	android.util.Log.v("PARSEAR", "NO hay datos en el nodo");
    	Cadenaresultado.setText("No hay datos a mostrar");
    }
    

mónica