Dans la programmation Android, GridView et ListView sont tous deux des dispositions multi-contrôles couramment utilisées, et GridView est le premier choix pour implémenter le diagramme des neuf palais ! Cet article explique comment utiliser GridView pour implémenter le diagramme des neuf palais ! GridView a de nombreuses utilisations. La méthode la plus couramment introduite sur Internet consiste à implémenter un ImageAdapter pour hériter de BaseAdapter, puis à l'utiliser pour GridView. Des méthodes comme celle-ci ne seront pas répétées dans cet article. L'utilisation de GridView présentée dans cet article est très similaire. au ListView introduit précédemment.
Jetons d'abord un coup d'œil aux résultats de l'exécution du code de cet article :
Cet article doit ajouter/modifier 3 fichiers : main.xml, night_item.xml et le code source JAVA.
Le code source du main.xml est le suivant, c'est un GirdView, utilisé pour charger les Items :
<?xml version="1.0" encoding="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"/>
Voici une brève introduction à certaines des propriétés :
android:numColumns="auto_fit", le nombre de colonnes de GridView est défini sur automatique
android:columnWidth="90dp", la largeur de chaque colonne, qui est la largeur de l'élément
android:stretchMode="columnWidth", la mise à l'échelle est synchronisée avec la taille de la largeur de la colonne
android:verticalSpacing="10dp", la marge entre deux lignes, par exemple : l'espacement entre la première ligne (NO.0~NO.2) et la deuxième ligne (NO.3~NO.5) est de 10dp
android:horizontalSpacing="10dp", la marge entre deux colonnes.
Ensuite, nous introduisons night_item.xml. Ce XML est très similaire au ImageItem.xml du ListView précédent :
<?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>
Enfin, il y a le code source JAVA, qui est très similaire au code source JAVA ListView précédent, mais avec une gestion des événements plus « sélectionnés » :
public void onCreate(Bundle savingInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridView gridview = (GridView) findViewById(R.id.gridview);//Générer un tableau dynamique et le transférer vers le 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);//Ajouter l'ID de la ressource image map.put("ItemText", "NO."+String.valueOf(i));//Créer ItemText en fonction du numéro de série lstImageItem.add(map);}//Générer les éléments ImageItem <====> de l'adaptateur du tableau dynamique, les deux correspondent un à un SimpleAdapter saImageItems = new SimpleAdapter(this, //Aucune explication lstImageItem,// Source de données R. layout.night_item,//Implémentation XML de night_item//Tableau dynamique et sous-élément correspondant à ImageItem new String[] {"ItemImage","ItemText"}, //Un ID ImageView et deux ID TextView dans le fichier XML ImageItem new int[] {R.id.ItemImage,R.id.ItemText});//Ajouter et afficher la grille. setAdapter(saImageItems);//Ajouter un traitement de message gridview.setOnItemClickListener(new ItemClickListener());}//Lorsque l'on clique sur AdapterView (écran tactile ou clavier), la classe d'événement de clic d'élément renvoyée ItemClickListener implémente OnItemClickListener{ public void onItemClick(AdapterView<?> arg0,//L'AdapterView où le clic s'est produit View arg1 ,//La vue dans AdapterView sur laquelle vous avez cliqué int arg2,//La position de la vue dans l'adaptateur long arg3//L'identifiant de ligne de l'élément sur lequel vous avez cliqué) { //Dans ce cas arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); ItemText setTitle((String)item.get("ItemText") }}