En la programación de Android, GridView y ListView son diseños de control múltiple de uso común, y GridView es la primera opción para implementar el Diagrama de los Nueve Palacios. ¡Este artículo presenta cómo usar GridView para implementar el Diagrama de los Nueve Palacios! GridView tiene muchos usos. El método más comúnmente introducido en Internet es implementar un ImageAdapter para heredar BaseAdapter y luego usarlo para GridView. Los métodos como este no se repetirán en este artículo. El uso de GridView presentado en este artículo es muy similar. al ListView presentado anteriormente.
Primero echemos un vistazo a los resultados de ejecutar el código de este artículo:
Este artículo necesita agregar/modificar 3 archivos: main.xml, night_item.xml y código fuente JAVA.
El código fuente main.xml es el siguiente, es un GirdView, utilizado para cargar elementos:
<?xml versión="1.0" codificación="utf-8"?><GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview " android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gravity="centro"/>
Aquí hay una breve introducción a algunas de las propiedades:
android:numColumns="auto_fit", el número de columnas de GridView está configurado en automático
android:columnWidth="90dp", el ancho de cada columna, que es el ancho del elemento
android:stretchMode="columnWidth", el escalado se sincroniza con el tamaño del ancho de la columna
android:verticalSpacing="10dp", el margen entre dos filas, por ejemplo: el espacio entre la fila uno (NO.0~NO.2) y la fila dos (NO.3~NO.5) es 10dp
android:horizontalSpacing="10dp", el margen entre dos columnas.
A continuación, presentamos night_item.xml. Este XML es muy similar al ImageItem.xml del ListView anterior:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom ="4dip" android:layout_width="fill_parent"> <ImageView android:layout_height="wrap_content" android:id="@+id/ItemImage" android:layout_width="wrap_content" android:layout_centerHorizontal="true"> </ImageView> <TextView android:layout_width="wrap_content" android:layout_below="@+id/ItemImage" android:layout_height="wrap_content" android:text="TextView01" android:layout_centerHorizontal="true" android:id="@+id/ItemText"> </TextView></RelativeLayout>
Finalmente, está el código fuente JAVA, que es muy similar al código fuente JAVA de ListView anterior, pero con un manejo de eventos más "seleccionado":
public void onCreate(Bundle saveInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridView gridview = (GridView) findViewById(R.id.gridview);// Generar una matriz dinámica y transferirla al datos ArrayList <HashMap<Cadena, Objeto>> lstImageItem = nueva ArrayList<HashMap<Cadena, Objeto>>();for(int i=0;i<10;i++){ HashMap<String, Object> map = new HashMap<String, Object>(); icon);//Agregar el ID del recurso de imagen map.put("ItemText", "NO."+String.valueOf(i));//Crear ItemText según el número de serie lstImageItem.add(map);}// Genera los elementos ImageItem <====> del adaptador de la matriz dinámica, los dos corresponden uno a uno SimpleAdapter saImageItems = new SimpleAdapter(this, //Sin explicación lstImageItem,// Fuente de datos R.layout.night_item,//Implementación XML de night_item//Matriz dinámica y subelemento correspondiente a ImageItem new String[] {"ItemImage","ItemText"}, //Un ID de ImageView y dos TextView en el archivo ImageItem XML new int[] {R.id.ItemImage,R.id.ItemText});//Agregar y mostrar la vista de cuadrícula. setAdapter(saImageItems);//Agregar procesamiento de mensajes gridview.setOnItemClickListener(new ItemClickListener());}//Cuando se hace clic en AdapterView (pantalla táctil o teclado), la clase de evento de clic de elemento devuelto ItemClickListener implementa OnItemClickListener{ public void onItemClick(AdapterView<?> arg0,//El AdapterView donde ocurrió el clic Ver arg1 ,//La vista dentro de AdapterView en la que se hizo clic int arg2,//La posición de la vista en el adaptador long arg3//La identificación de la fila del elemento en el que se hizo clic) { //En este caso arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); ItemText setTitle((String)item.get("ItemText"));