Para que en la aplicación XMLParser, los datos extraídos de los nodos xml sean de fácil visualización por parte del usuario, hemos decidido usar un ListView.
A continuación detallamos cómo hemos diseñado los layout asociados.
- listado_resultado.xml se corresponde con la clase Resultado_parsear. En dicho layout tenemos la siguiente estructura:
- FrameLayout principal encargado de albergar el resto de los elmentos
- LinearLayout definido con orientación horizontal donde se encuentra una cadena de texto en la cual aparece un mensaje de error en caso de problemas en la lectura del xml
- ListView donde se muestran los nodos extraídos del xml. Se trata de una base que luego será extendida y definida en el layout listado_annexo.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/verdeazulado" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/Cadenaresultado" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> </LinearLayout> <ListView android:id="@+id/ListadoProductos" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </FrameLayout>
En la vista de Outline podemos ver la estructura diseñada de una manera sencilla
La diferencia entre el parámetro match_parent y wrap_content es la siguiente:- match_parent se usa cuando queremos que la vista (view) sea tan grande como la del padre. Esta propiedad también puede indicarse con fill_parent
- wrap_content se usa cuando queremos que la vista (view) sea los suficientemente grande como para albergar su contenido. Es por tanto un tamaño relativo
- FrameLayout principal encargado de albergar el resto de los elmentos
- listado_annexo.xml se corresponde con el layout que la clase Adaptador_xml completará. La siguiente imagen muestra su estructura:
- LinearLayout principal el cual alberga el resto de los elementos
- LinearLayout definido con orientación horizontal el cual tiene como hijos una imagen y un segundo LinearLayout
- ImageView encargado de albergar el icono asociado al producto
- LinearLayout con orientación vertical en el cual se mostrarán las características del producto
- TextView asociado al nombre del producto. Lo definimos con estilo negrita y un tamaño de 20 sp
- TextView asociado a la cantidad de producto. Lo definimoc con estilo normal y un tamaño de 12 sp
- TextView asociado al precio del producto. Lo definimos con estilo cursiva y un tamaño de 16 sp
- LinearLayout definido con orientación horizontal el cual tiene como hijos una imagen y un segundo LinearLayout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/verdeazulado" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/icono" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="4dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:src="@drawable/vacio" > </ImageView> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/TituloProducto" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:textStyle="bold" /> <TextView android:id="@+id/SubTituloCantidad" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="12sp" android:textStyle="normal" /> <TextView android:id="@+id/SubTituloPrecio" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textStyle="italic" /> </LinearLayout> </LinearLayout> </LinearLayout>
NOTA: ¿Cuándo usamos sp y cuando dp?
- LinearLayout principal el cual alberga el resto de los elementos