Dalam pemrograman Android, GridView dan ListView keduanya merupakan tata letak multi-kontrol yang umum digunakan, dan GridView adalah pilihan pertama untuk mengimplementasikan Diagram Sembilan Istana! Artikel ini memperkenalkan cara menggunakan GridView untuk mengimplementasikan Diagram Sembilan Istana. GridView memiliki banyak kegunaan. Metode yang paling umum diperkenalkan di Internet adalah mengimplementasikan ImageAdapter untuk mewarisi BaseAdapter dan kemudian menggunakannya untuk GridView. Metode seperti ini tidak akan diulangi dalam artikel ini ke ListView yang diperkenalkan sebelumnya.
Mari kita lihat dulu hasil menjalankan kode artikel ini:
Artikel ini perlu menambahkan/memodifikasi 3 file: main.xml, night_item.xml, dan kode sumber JAVA.
Kode sumber main.xml adalah sebagai berikut, ini adalah GirdView, yang digunakan untuk memuat Item:
<?xml version="1.0" coding="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"/>
Berikut adalah pengenalan singkat tentang beberapa properti:
android:numColumns="auto_fit", jumlah kolom GridView disetel ke otomatis
android:columnWidth="90dp", lebar setiap kolom, yang merupakan lebar Item
android:stretchMode="columnWidth", penskalaan disinkronkan dengan ukuran lebar kolom
android:verticalSpacing="10dp", margin antar dua baris, contoh: jarak antar baris satu (NO.0~NO.2) dan baris dua (NO.3~NO.5) adalah 10dp
android:horizontalSpacing="10dp", margin antara dua kolom.
Selanjutnya, kami memperkenalkan night_item.xml. XML ini sangat mirip dengan ImageItem.xml dari ListView sebelumnya:
<?xml version="1.0" coding="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>
Terakhir, ada kode sumber JAVA, yang sangat mirip dengan kode sumber ListView JAVA sebelumnya, tetapi dengan penanganan event yang lebih "terpilih":
public void onCreate(Bundle saveInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridView gridview = (GridView) findViewById(R.id.gridview);//Buat array dinamis dan transfer ke data ArrayList <HashMap<String, Objek>> lstImageItem = ArrayList baru<HashMap<String, Objek>>();for(int i=0;i<10;i++){ HashMap<String, Object> map = new HashMap<String, Object>(); icon);//Tambahkan ID resource gambar map.put("ItemText", "NO."+String.valueOf(i));//Buat ItemText sesuai nomor seri lstImageItem.add(map);}//Buat elemen ImageItem <====> adaptor dari array dinamis, keduanya berkorespondensi satu-ke-satu SimpleAdapter saImageItems = new SimpleAdapter(this, //Tidak ada penjelasan lstImageItem,// Sumber data R. layout.night_item,//implementasi XML dari night_item//Array dinamis dan sub-item yang sesuai dengan ImageItem new String[] {"ItemImage","ItemText"}, //Satu ImageView dan dua ID TextView di file XML ImageItem new int[] {R.id.ItemImage,R.id.ItemText});//Tambahkan dan tampilkan gridview . setAdapter(saImageItems);//Tambahkan pemrosesan pesan gridview.setOnItemClickListener(baru ItemClickListener());}//Ketika AdapterView diklik (layar sentuh atau keyboard), kelas peristiwa Item click yang dikembalikan ItemClickListener mengimplementasikan OnItemClickListener{ public void onItemClick(AdapterView<?> arg0,//AdapterView tempat klik terjadi Lihat arg1 ,//Tampilan dalam AdapterView yang diklik int arg2,//Posisi tampilan dalam adaptor panjang arg3//Id baris item yang diklik ) { //Dalam hal ini arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); //Tampilkan semua Select ItemText setTitle((String)item.get("ItemText")); }}