Grid Layout

Créez un répertoire res/drawable ou vous placerez n images.

1°) Création d’un Layout :

 <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:background="@color/Black"
 android:columnWidth="50dp"
 android:gravity="center"
 android:horizontalSpacing="10dp"
 android:numColumns="auto_fit"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 android:stretchMode="columnWidth"
 android:verticalSpacing="10dp" />

2°) Construction d’un adapter :

Pour afficher dans la GridView les images

 package com.andrologiciels.androgridlayout;  
 import java.util.ArrayList;  
 import java.util.List;  
 import android.content.Context;  
 import android.view.View;  
 import android.view.ViewGroup;  
 import android.widget.BaseAdapter;  
 import android.widget.GridView;  
 import android.widget.ImageView;  
 public class GridAdapter extends BaseAdapter {  
      private Context context;  
      // -- imageIds tableau dynamique stockant les images  
      private static List<Integer> imageIds = new ArrayList<Integer>();  
      public GridAdapter(Context c) {  
           context = c;  
           // -- Chargement des icônes  
           loadDrawables(R.drawable.class);  
      }  
      public int getCount() {  
           return imageIds.size();  
      }  
      public Object getItem(int position) {  
           return imageIds.get(position);  
      }  
      public long getItemId(int position) {  
           return 0;  
      }  
      public View getView(int position, View view, ViewGroup parent) {  
           ImageView iview;  
           if (view == null) {  
                iview = new ImageView(context);  
                iview.setLayoutParams(new GridView.LayoutParams(85, 85));  
                iview.setScaleType(ImageView.ScaleType.CENTER_CROP);  
                iview.setPadding(8, 8, 8, 8);  
           } else {  
                iview = (ImageView) view;  
           }  
           iview.setImageResource(imageIds.get(position));  
           return iview;  
      }  
      // -- Alimente le tableau avec l'ensemble des id des icones  
      public static void loadDrawables(Class<?> clz) {  
           final java.lang.reflect.Field[] fields = clz.getDeclaredFields();  
           for (java.lang.reflect.Field field : fields) {  
                final int drawableId;  
                try {  
                     drawableId = field.getInt(clz);  
                     imageIds.add(drawableId);  
                } catch (Exception e) {  
                     continue;  
                }  
           }  
      }  
 }  

3°) Affichage du grid et gestion du click :

 package com.andrologiciels.androgridlayout;  
 import android.app.Activity;  
 import android.os.Bundle;  
 import android.view.View;  
 import android.widget.AdapterView;  
 import android.widget.AdapterView.OnItemClickListener;  
 import android.widget.GridView;  
 import android.widget.Toast;  
 public class MainActivity extends Activity {  
      protected void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
           // -- Affichage de la liste des icones  
           setContentView(R.layout.ico_grid);  
           GridView gridview = (GridView) findViewById(R.id.gridview);  
           final GridAdapter gridadapter = new GridAdapter(this);  
           gridview.setAdapter(gridadapter);  
           // -- Gestion du click sur image  
           gridview.setOnItemClickListener(new OnItemClickListener() {  
                public void onItemClick(AdapterView<?> parent, View v,  
                          int position, long id) {  
                     String sMsg = gridadapter.getItem(position).toString();  
                     Toast.makeText(MainActivity.this, sMsg, Toast.LENGTH_SHORT)  
                               .show();  
                }  
           });  
      }  
 }  

Le code est ici

Mise à jour de la grid :

1°) ajouter les fonctions suivantes dans la classe de l’adapteur :

   public void clearAdapter() {  
     imageIds.clear();  
   }  
   public void addNewValues(List<Integer> imageIds) {  
     this.imageIds = imageIds;  
   }  

2°) lorsque l’on veut mettre à jour la grid (par exemple dans le click) :

         //-- on met à jour la grid 
         gridadapter.clearAdapter(); //-- Efface les valeurs anciennes  
         gridadapter.addNewValues(DbHelper.getIconIdNotSelected(dbNumTel)); //-- recharge les nouvelles valeurs  
         gridadapter.notifyDataSetChanged(); //-- Affiche la Grid  

Exemple complet ici montrant l’utilisation d’une GridView alimentée par une base de données.

Références :

http://wptrafficanalyzer.in/blog/listing-images-in-gridview-using-simple-adapter-in-android/

https://www.linux.com/learn/tutorials/748050-how-to-set-up-a-list-of-clickable-images-in-android-app-development-with-gridview

http://android-er.blogspot.fr/2013/02/implement-own-app-launcher.html

http://www.mkyong.com/android/android-gridview-example/

http://www.coderzheaven.com/tag/customgridviewexample/

http://www.javacodegeeks.com/2013/08/android-custom-grid-view-example-with-image-and-text.html

Articles récents
Commentaires récents
fatima sur Bienvenue !
AdminDroid sur Bienvenue !
fatima sur Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :