In der Android-Programmierung sind GridView und ListView häufig verwendete Multi-Control-Layouts, und GridView ist die erste Wahl für die Implementierung des Nine Palaces-Diagramms. In diesem Artikel wird beschrieben, wie Sie GridView zum Implementieren des Nine Palaces-Diagramms verwenden. GridView hat viele Verwendungsmöglichkeiten. Die im Internet am häufigsten eingeführte Methode besteht darin, einen ImageAdapter zu implementieren und ihn dann für GridView zu verwenden. Die in diesem Artikel vorgestellte Verwendung von GridView ist sehr ähnlich zur zuvor eingeführten ListView.
Schauen wir uns zunächst die Ergebnisse der Ausführung des Codes dieses Artikels an:
In diesem Artikel müssen drei Dateien hinzugefügt/geändert werden: main.xml, night_item.xml und JAVA-Quellcode.
Der Quellcode von main.xml lautet wie folgt: Es handelt sich um eine GirdView, die zum Laden von Elementen verwendet wird:
<?xml version="1.0" binding="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="center"/>
Hier finden Sie eine kurze Einführung in einige der Eigenschaften:
android:numColumns="auto_fit", die Anzahl der Spalten von GridView ist auf automatisch eingestellt
android:columnWidth="90dp", die Breite jeder Spalte, also die Breite des Elements
android:stretchMode="columnWidth", die Skalierung wird mit der Spaltenbreite synchronisiert
android:verticalSpacing="10dp", der Abstand zwischen zwei Zeilen, zum Beispiel: Der Abstand zwischen Zeile eins (NO.0~NO.2) und Zeile zwei (NO.3~NO.5) beträgt 10dp
android:horizontalSpacing="10dp", der Rand zwischen zwei Spalten.
Als nächstes stellen wir night_item.xml vor. Dieses XML ist dem ImageItem.xml der vorherigen ListView sehr ähnlich:
<?xml version="1.0" binding="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>
Schließlich gibt es noch den JAVA-Quellcode, der dem vorherigen ListView JAVA-Quellcode sehr ähnlich ist, jedoch über eine „ausgewähltere“ Ereignisbehandlung verfügt:
public void onCreate(Bundle savingInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridView gridview = (GridView) findViewById(R.id.gridview);//Generieren Sie ein dynamisches Array und übertragen Sie es an das data ArrayList <HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();for(int i=0;i<10;i++){ HashMap<String, Object> map = new HashMap<String, Object>(); map.put("ItemImage", R.drawable. icon);//Fügen Sie die ID der Bildressource hinzu map.put("ItemText", "NO."+String.valueOf(i));//Erstellen Sie ItemText entsprechend der Seriennummer lstImageItem.add(map);}//Generieren Sie die ImageItem <====>-Elemente des Adapters des dynamischen Arrays, die beiden entsprechen eins zu eins SimpleAdapter saImageItems = new SimpleAdapter(this, //Keine Erklärung lstImageItem,// Datenquelle R. layout.night_item,//XML-Implementierung von night_item//Dynamisches Array und Unterelement entsprechend ImageItem neuer String[] {"ItemImage", "ItemText"}, // Eine ImageView- und zwei TextView-IDs in der ImageItem-XML-Datei new int[] {R.id.ItemImage,R.id.ItemText});//Gridview hinzufügen und anzeigen. setAdapter(saImageItems);//Nachrichtenverarbeitung hinzufügen Gridview.setOnItemClickListener(new ItemClickListener());}//Wenn auf die AdapterView geklickt wird (Touchscreen oder Tastatur), implementiert die zurückgegebene Item-Klick-Ereignisklasse ItemClickListener OnItemClickListener{ public void onItemClick(AdapterView<?> arg0,//Die AdapterView, in der der Klick stattgefunden hat, View arg1 ,//Die Ansicht innerhalb der AdapterView, auf die geklickt wurde int arg2,//Die Position der Ansicht im Adapter long arg3//Die Zeilen-ID des Elements, auf das geklickt wurde) { //In diesem Fall arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); //Alle anzeigen Auswählen ItemText setTitle((String)item.get("ItemText") }}