2 - Android avec MySQL et PHP : Partie Serveur


Dans cette partie , on va se concentrer sur la partie Serveur : Mysql + Php .
  1. Création de la base de données MySQL : 

  2.  Voici les tables de notre base foodapp_db.
     
     Lancer ce script dans SQl du phpmyadmin:

     Jusqu'ici la base est préparée avec des données . 
     







  3.  Création des services web  avec PHP:
  4.  Pour que notre application Android peut communiquer  avec la base de données MySQl , il faut l'intervention des webservices . Le client fait appel au service (écrite en PHP) , qui va se connecter à la base et récupérer les informations puis retourner le résultat en JSON à notre application via des requêtes HTTP . 
    Le script PHP va récupérer les données depuis la base de données MySQL. 
    Ensuite les données seront encodées au format JSON et envoyées au système Android. Ensuite, l'application Android va obtenir ces données codées. Il les analysera et les affichera sur l'appareil Android.    
     Dans nos services , on a besoin des informations liées à la base : Url du serveur (localhost dans notre cas ), nom de la base de données , user et le mot de passe pour se connecter à chaque fois . Donc , on crée un fichier db_config.php :

    Ensuite , on crée le script de la connection à la base db_connect.php :

    Maintenant , pour récupérer des données de la base, on utilise les requêtes simple de MySQL et le retour sera sous forme JSON :
    1.  get_all_categories.php : 


    2. - get_all_products.php :


    3. - get_categorie_products.php: 


    4. - add_product.php :

     

    Jusqu'ici , nos services sont prêts à utiliser , vous pouvez ajouter d'autres en inspirant des services précédents .
    N'oubliez de mettre les fichiers php dans un dossier sous C:\wamp\www\ , par exemple sous : C:\wamp\www\tuto.
  1. Tester les webservices :

Il nous reste que de tester les webservices .C'est simple !
On accède à http://localhost:81/tuto/  (pour moi mon serveur est sous localhost:81 ). Vous allez voir tous vos scripts php , y accéder est voir le résultat .
etc..

Dans l'article suivant , on va récupérer les données via nos services avec Android .

Android avec MySQL et PHP : Partie Client



Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

1 - Android avec MySQL et PHP : Introduction


Bonjour ,dans cette série on va vous montrer comment la communication d'une application Android avec une base de données MySQL se fait en utilisant les services web écrites en PHP .
On va prendre comme exemple une application d'un restaurant : 
  1. Un menu dont on affiche les catégories existants : Pizza , cake , jus etc.. avec une image représentative pour chacune.
  2. Pour chaque catégorie , on affiche la listes des aliments dans une ListView .
  3. Option pour ajouter un nouveau aliment dans la base via l'application .
  4. Autre option pour supprimer un aliment dans une catégorie choisie
Donc , on va voir comment récupérer , ajouter , supprimer des données de la base MySQL via une application Android en utilisant protocole  HTTP .
En faite , la méthode la plus répandue de se connecter à une base de données MySQL à distance à partir d'un appareil Android, est d'utiliser un service.

MySQL est habituellement utilisé avec PHP, donc le moyen le plus simple et le plus évident est d'écrire un script PHP.
Et pour faire des connexions avec le script PHP, nous allons utiliser le protocole HTTP du système Android.
Voila l'architecture de notre application :


Vous pouvez utiliser notre exemple et l'améliorer selon vos besoins .
Pour notre base de données :


Pour les images dans la base , on va insérer les urls  correspondants (à afficher ) . Nous allons voir comment afficher une image à partir de la base .

JSON:

JSON (JavaScript Object Notation)  est une format de données textuel, générique, dérivé de la notation des objets du langage ECMAScript.
Lorsque l'pplication android fait un apple à un service (en php) , le service va se communiquer avec la base MySQL , et il va retourner le résulat sous la forme JSON (compréhensible par Android et facile à analyser  ).

Un message JSON peut comprendre soit un JSONObject ou un JSONArray :


Pour les opérations , on va écrire chaque fonction dans un script PHP.

Le code PHP sera très simple :

  1. se connecter à la base de données
  2. exécuter une requête SQL (qui peut comprendre  avec un bloc WHERE en fonction des données des valeurs POST/GET)
  3. l'envoie  (la résultat) en format JSON

Pour le protocole HTTP ,deux méthodes couramment utilisées pour une requête-réponse entre un client et le serveur sont: GET et POST.
  1.   GET : Demande des données d'une ressource spécifiée (de la base) 
  2.   POST : Soumettre des données vers la base .
Dans la partie Android , l'affichage des données (catégories et aliments) sera dans un ListView et GridView personnalisées avec des images .


Dans l'article suivant , on va commencer à écrire nos scripts  avec PHP et créer  notre base de données .

2 - Android avec MySQL et PHP : Partie Serveur

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Les notifications sous Android


Les notifications servent à afficher des messages dans la barre d'état dans une application Android. L'implementation d'une notification est très simple Lorsqu'elle s'affiche , l'utilsateur peut cliquer sur cette notification qui va le rediriger vers une activité dans notre application .
L'affichage de la notificaton est personnalisée. 
Dans notre cas , on va crée une application Android dont elle a deux bouttons : l'un  pour l'affichage et l'autre pour supprimer la notification .
C'est simple ; C'est parti !

C'est la layout de notre activité : Avec deux bouttons 

Dans l'activité principale :

Comme vous voyez , on va créer deux méthodes : supprimerNotification et ajouterNotification.
A noter que chaque notification a une ID pour l'identifier .


Il nous reste qu'ajoute la permission de vibration lors de la notification:




Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

Web Service SOAP sous Android [ Partie 2 / 2 ]



Bienvenue, on a vu dans la première partie comment on crée un webservice avec des méthodes qu'on va les appelés avec notre application android .

1. Rappel
Notre webservice a deux méthodes :  
  1.  getAllClients(): retourne une liste des clients 
  2.  getClientsSalary(float a, float b) : retourne la liste des clients dont le salaire est entre a et b (Client.salary)

 2. Projet Android
Notre webservice a deux méthodes , donc on va les appeler via une application android .
On crée un nouveau projet Android (J'utilise Eclipse ADT ).
Après la création du projet , on ajoute la permission INTERNET dans le fichier AndroidManifest.xml.


On a besoin d'une bibliothèque pour consommer les webservices Soap : c'est KSoap2 
SOAP (protocole Simple Object Access) est un protocole léger utilisé pour l'échange d'informations dans un environnement décentralisé. Il a été développé par Microsoft et a été proposée comme une interface standard à l'Internet Engineering Task Force (IETF). Une demande SOAP se compose principalement de trois parties:

  1.   Enveloppe - Il définit un cadre pour décrire ce qui est dans un message et comment le traiter. 
  2.  Règles - Il comprend un ensemble de règles de codage pour exprimer instances de types de données définis par l'application. 
  3.  Convention - Utilisé pour représenter les appels et les réponses de procédure à distance.

Dans ce tutoriel, nous allons apprendre comment envoyer des requêtes SOAP utilisant Android. Pour mettre en œuvre les requêtes SOAP utilisant Android, nous pouvons utiliser la bibliothèque Ksoap2. Ce est une bibliothèque client SOAP léger pour la plate-forme Android.

Pour télecharger la bibliothèque: ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar.
On ajoute cette bibliothèque dans le dossier libs dans notre projet Android.
 Il faut la cocher dans les dépendances du projet .

Revenons à notre webservice . 
Url : http://localhost/tutozonetuto/Service1.asmx
Résultat : Affichage de nos deux méthodes .


 Si on accède à l'une des méthodes , on voit :
La requête: 


La réponse : 



Il y a des informations qu'on va les utiliser dans notre projet (paramètres ):

NAMESPACE = http://tempuri.org/
SOAP_ACTION = http://tempuri.org/getAllClients
METHOD_NAME = getAllClients
URL = http://localhost/tutozonetuto/Service1.asmx

  

On a besoin d'une classe Client qui décrit un objet Client .

On ajoute ce code à notre activité: Pour le moment on va appeler notre webservice et on affiche le résultat dans le logcat.

Lorsqu'on teste notre application , on voit dans le log :

 

  Il nous reste que transformer la réponse en données compréhensible pour notre application afin les exploiter.
Il y des cas ou passe des paramètres à notre méthode , pour le faire il suffit d'ajouter PropertyInfo au requête.

Pour le parsing c'est bientôt.

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus. 

Web Service SOAP sous Android [ Partie 1 / 2 ]



Bienvenue à tous , dans ce tutoriel on va voir comment créer un webservice SOAP avec C# et comment on va le consommer avec Android.

Un web service permet la communication et l’échange de données entre une application et un système via internet. SOAP (Simple Object Access Protocol) est un protocole réseau permettant de faire des appels de procédures sur une machine distante à l’aide d’un serveur d’application.

On va créer une simple application qui affiche une liste de clients [id,name,salary] , avec une simple recherche (filtrage selon le nom [name] et le salaire [salary]).

1. Environnement du travail
Web service Asp.net [c#]:
  • Visual studio
  • IIS Server  
Android [Java] :

   2. Création , publication et le test du service web SOAP:
 Commençant par la création et la publication du webservice.(Pour plus de details visitez cet article sur codeproject.com) .
On va créer un webservice avec deux methodes :
  1. getAllClients(): retourne une liste des clients
  2. getClientsSalary(float a, float b) : retourne la liste des clients dont le salaire est entre a et b (a< Client.salary
 On va créer une méthode initialisation pour initialiser notre liste des clients (d'objet Client)
  • Exécuter Visual Studio et créer un nouveau application de web service: TutoZoneWebServiceSoap
Création du projet
Arborescence du projet


  •  Dans le fichier Serrvice1.asmx, vous allez trouver une fonction hello World:

  • On va créer notre objet Client (id, name ,salary):

  • Remplaçons maintenant la fonction Hello world par :

  • Testons alors notre web service: Générer  puis  publier.
  •  Voici les étapes de la publication
 
Résultat de la publication

Enfin on publie le webservice pour le tester (Exécuter):
  • On accéde à http://localhost/TutoZoneTuto/ :
Resultat

Si on accede à la methode getAllClients : http://localhost/TutoZoneTuto/Service1.asmx/getAllClients:
 
Retour du fonction

3. Partie Android:  Utilisation du service web SOAP:
On va voir cette partie dans la 2 éme partie de ce tutoriel .

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel ] : Android SQLite [Simple]



www.tutozone.tn 



 Dans les applications android , on a besoin de stocker quelques données dans une base . Les tables que l’on créé avec SQLite doivent bien entendu être simple tout comme les requêtes que vous ferez dessus puisqu'il est le plus leger.

Pour notre exemple, nous allons créer une base de données avec une table pour enregistrer des aliments (Food). On va donc commencer doucement avec la création de la classe Food . D’ailleurs, dans ce tuto on ne va pas faire d’interface graphique, on va juste afficher les résultats de nos requêtes dans le logcat.

Un 'Food' est caractérisé par : 
  • int Id
  • String name 
  • Float price
  • int quantity

Maintenant , pour manipuler notre base (Création , ajout, suppression , mise-à-jour, retrouver des données ...) , on a besoin d'utiliser la classe SQLiteOpenHelper qui est une classe d’assistance pour gérer la création de bases de données et la gestion des versions.
On va créer une nouvelle classe SQLiteDatabaseHandler et qui « extends » de SQLiteOpenHelper. Cette classe va nous permettre de définir la table qui sera produite lors de l’instanciation de celle-ci , les opérations à faire (CRUD) (On peut modifier cette classe pour répondre à vos besoins ):

C'est presque terminé maintenant .Dans notre activité , on crée une instance de la classe SQLiteDatabaseHandler , et on fait appelle au fonctions qu'on a besoin :

A vous de tester . 

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Android GridView personnalisé [ Recherche & Animation]


www.tutozone.tn

On a vu la dernière fois comment afficher des informations dans une liste personnalisée avec ListView  ( Tuto ) .

[Tutoriel] : ListView personnalisée avec Images , textes [ filtrage ] sous Android

Cette fois, on va les afficher dans une autre façon : dans un GridView  .


www.tutozone.tn

Dans cette article , on va prendre , l'exemple du tutoriel de la ListView . On n'a pas grande chose à changer puisqu'ils sont de la même manière :
  1. On crée le projet android
  2. On ajoute une listView (ou GridView)
  3. On crée la layout d'un item 
  4. On crée notre Objet
  5. On crée l'adaptateur 
  6. Dans l'activité praincipale , on initialise la liste des données à afficher et la listView (ou GridView) ,et on ajoute les informations à l'aide de l'adapteur qu'on a  déja crée.
Les changements à faire par rapport à l'exmple de la listView sont :
  •  On ajoute un GridView à la layout principale:
  • On crée la layout d'un item :
  • Dans l'adaptateur : FoodListAdpater:
  • Dans l'activité principale :
www.tutozone.tn

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Android ListView avec Animations [ +Demos]

www.tutozone.tn


Suite au tutoriel précdedant concernant la personnalisation des ListViews :
nous allons voir comment ajouter des animations à notre liste des informations (UI) .
Voici un avant goût .. 

www.tutozone.tn
Animer une ListView
Pour le code finale , il est disponible sur mediafire:
 
www.tutozone.tn
Code final

Pour aboutir à ce résultat, il faut bien suivre le tutoriel déjà cité.
L'idée générale c'est qu'on va appliquer les animations , ecrites en xml dans le dossier res/anim/ , aux items de la liste dans l'adaptateur de la ListView dans la classe 'FoodListAdapter'.
Avant tout , on va ajouter les fichiers xml d'animations dans le soosier res/anim (on le crée s'il n'existe pas) :
  •  Effet "fade in": fade_in.xml
< alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="100"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" / >

www.tutozone.info
Démo Effet Fade in
  •  Effet "Push left in" : push_left_in.xml

< set xmlns:android="http://schemas.android.com/apk/res/android">
   < translate android:fromXDelta="100%p" android:toXDelta="0"
         android:duration="300" />
   < alpha android:fromAlpha="0.0" android:toAlpha="1.0"
         android:duration="300" />
< /set>

www.tutozone.info
Démo Effet Push left in
  • Effet "Push up in" : push_up_in.xml :
< set xmlns:android="http://schemas.android.com/apk/res/android">
   < translate android:fromYDelta="100%p" android:toYDelta="0"
          android:duration="500"/>
   < alpha android:fromAlpha="0.0" android:toAlpha="1.0"
          android:duration="500" />
< /set>

www.tutozone.info
Démo Effet Push up in
  • Effet "Slide in Top" : slide_in_top.xml :
< set xmlns:android="http://schemas.android.com/apk/res/android" >
    < translate
        android:duration="1000"
        android:fromYDelta="-100%p"
        android:toYDelta="1" />
< /set>

www.tutozone.info
Démo Effet slide in top

Et il y'a d'autres effets téléchargeable ici (dossier anim , mettez le dans res/ )



https://www.mediafire.com/?t5w2bimc24iht0x
Animations xml


Passons maintenant à notre classe adaptateur (FoodListAdapter), on ajoute deux variables gloabales:
private List listFood = null;
 LayoutInflater layoutInflater;
    Context context; // nouvel
    private int lastPosition = -1; //nouvel
    
 // constructeur
 public FoodListAdapter(Context context, List listFood) {
  this.listFood = listFood;
  layoutInflater = LayoutInflater.from(context);
  this.listFood = listFood;
  this.context=context; //nouvel

 }

Pour appliquer les animations en modifie la méthode getView() en ajoutant :

@Override
 public View getView(int position, View convertView, ViewGroup parent) {
         .... 
Animation animation = AnimationUtils.loadAnimation(context, (position >lastPosition) 
    ? R.anim.up_from_bottom : R.anim.up_from_bottom);
  convertView.startAnimation(animation);
     lastPosition = position;
  return convertView;

 }

Et on change R.anim.up_from_bottom par l'effet desiré ou bien on applique 2 effets.

Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.

[Tutoriel] : Android ListView personnalisée [ +Recherche ]

Article par Zied Rebhi:


Bienvenue à tous , dans cet article on va voir comment personnaliser une ListView.
La ListView peut comporter plusieurs types de données : Images , Textes etc.
Dans ce tutoriel on va vous montrer comment on crée une ListView avec des images et textes .
On  prend comme exemple : une application pour un restaurant (Food &amp;amp; Drinks).


Notre application va afficher des aliments avec leurs images , leurs noms et leurs prix .Donc un aliment (Food) est caractérisé par : 
  • name: String
  • price: float
  • picture: Drawable (Image)
==&amp;gt; Besoin d'une classe Food (objet)

import android.graphics.drawable.Drawable;

public class Food {
 int id;
 String name;
 Drawable picture;
 float price;

 public Food(int id, String name, Drawable picture, float price) {
  super();
  this.id = id;
  this.name = name;
  this.picture = picture;
  this.price = price;
 }

 public Food() {
  super();
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Drawable getPicture() {
  return picture;
 }

 public void setPicture(Drawable picture) {
  this.picture = picture;
 }

 public float getPrice() {
  return price;
 }

 public void setPrice(float price) {
  this.price = price;
 }

 @Override
 public String toString() {
  return "Food [id=" + id + ", name=" + name + ", picture=" + picture
    + ", price=" + price + "]";
 }

}



Pour afficher les listes des aliments on va créer ajouter une ListView à notre layout activity_main, et pour ajouter la fonction du recherche on ajouter un EditText: activity_main.xml :

 < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    < EditText
        android:id="@+id/search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Search something.." />
        
    < /EditText>

    < ListView
        android:id="@+id/listFood"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
   < /ListView >

< /LinearLayout>

Maintenant , pour qu'on puisse bien afficher la liste des informations on veut , on va presenter comment une ligne de la liste sera affiché dans la ListView, pour cela  on crée un  fichier xml sous /layout: food_row.xml :

 < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="5dip" >

    < LinearLayout
        android:id="@+id/thumbnail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="5dip"
        android:padding="3dip" &amp;gt;

        &amp;lt; ImageView
            android:id="@+id/picture"
            android:layout_width="50dip"
            android:layout_height="50dip" />
    < / LinearLayout >

    < TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/price"
        android:layout_toRightOf="@+id/thumbnail"
        android:text="name"
        android:textColor="#040404"
        android:textSize="15dip"
        android:textStyle="bold"
        android:typeface="sans" />

    < TextView
        android:id="@+id/price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="14dp"
        android:gravity="right"
        android:text="price"
        android:textColor="#ea5178"
        android:textSize="10dip"
        android:textStyle="bold" />

< / RelativeLayout>


Passons à la programmation java alors , on a déja ecrit la classe Food pour les objets , maintenant on va créer un adaptateur pour afficher les données convenablement dans la ListView: On crée une classe "FoodListAdapter" qui étend de la classe "BaseAdapter" :
public class FoodListAdapter extends BaseAdapter {

 private List listFood = null;
 LayoutInflater layoutInflater;

 // constructeur
 public FoodListAdapter(Context context, List listFood) {
  this.listFood = listFood;
  layoutInflater = LayoutInflater.from(context);
  this.listFood = listFood;

 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return listFood.size();
 }

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return listFood.get(position);
 }

 @Override
 public long getItemId(int arg0) {
  // TODO Auto-generated method stub
  return arg0;
 }

 static class ViewHolder {
  TextView nomView;
  TextView priceView;
  ImageView pictureView;

 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder holder;

  if (convertView == null) {
   convertView = layoutInflater.inflate(R.layout.food_row, null);
   holder = new ViewHolder();
   // initialisation des vues
   holder.nomView = (TextView) convertView.findViewById(R.id.name);
   holder.priceView = (TextView) convertView
                                        .findViewById(R.id.price);
   holder.pictureView = (ImageView) convertView
     .findViewById(R.id.picture);

   convertView.setTag(holder);
  } else {
   holder = (ViewHolder) convertView.getTag();
  }
  // affchier les données convenablement dans leurs positions
  holder.nomView.setText(listFood.get(position).getName());
  holder.priceView.setText(String.valueOf(listFood.get(position)
    .getPrice()) + " $");
  holder.pictureView.setBackgroundDrawable(listFood.get(position)
    .getPicture());
  return convertView;

 }
}

Passons à notre activity :Toute est prét !
On va initialiser une liste avec des objets de type Food , pour cela on a besoin:
  • Drawable[] listPictures: des images des aliments (ajoutées dans le dossier /drawable) téléchargeable ici
https://www.mediafire.com/?3ypo4awt3hm3t73
Télécharger les Images

  • Float[] listPrices: liste des prix
  • String[] listNames: liste des noms à ajouter
Voici la liste des variables globales qu'on va les utiliser :
 String[] listNames = { "Cake", "Cheese", "Chicken", "Cocktail", "Coffe",
   "Coffe black", "Humberger", "IceCream", "Pizza", "Sandwich",
   "Soupe", "Yaghurt" };

 Float[] listPrices = { (float) 1.5, (float) 1.4, (float) 4.3, (float) 1.8,
   (float) 0.7, (float) 0.650, (float) 1.7, (float) 1.200,
   (float) 4.500, (float) 2.500, (float) 2.8, (float) 0.500 };

 ArrayList listFood;
 ListView lv;
 EditText search;


Pour la fonction du recherche et filtrage on va ajouter une fonction filtrer () qu'on l'appelle lorsque il y a un changement dans l'EditText : "addTextChangedListener":


 public void filtrer() {
  // retourner la chaine saisie par l'utilisateur
  String name = search.getText().toString();
  // créer une nouvelle liste qui va contenir la résultat à afficher
  ArrayList listFoodNew = new ArrayList();
  
  for (Food food : listFood) {
   // si le nom du food commence par la chaine saisie , ajouter-le !
   if (food.getName().toLowerCase().toString().startsWith(name)) {
    listFoodNew.add(food);
   }
  }
  //vider la liste
  lv.setAdapter(null);
  // ajouter la nouvelle liste
  lv.setAdapter(new FoodListAdapter(getApplicationContext(), listFoodNew));
 }

Le code finale de notre activité sera :
@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_food);
  lv = (ListView) findViewById(R.id.listFood);
  search = (EditText) findViewById(R.id.search);
  Drawable[] listPictures = {
    getResources().getDrawable(R.drawable.cake),
    getResources().getDrawable(R.drawable.cheese),
    getResources().getDrawable(R.drawable.chicken),
    getResources().getDrawable(R.drawable.cocktail),
    getResources().getDrawable(R.drawable.coffe),
    getResources().getDrawable(R.drawable.coffeblack),
    getResources().getDrawable(R.drawable.hamburger),
    getResources().getDrawable(R.drawable.icecream),
    getResources().getDrawable(R.drawable.pizza),
    getResources().getDrawable(R.drawable.sandwich),
    getResources().getDrawable(R.drawable.soup),
    getResources().getDrawable(R.drawable.yoghurt) };

  listFood = new ArrayList();

  for (int i = 0; i &amp;lt; listPictures.length; i++) {
   listFood.add(new Food(i + 1, listNames[i], listPictures[i],
     listPrices[i]));
  }

  lv.setAdapter(new FoodListAdapter(getApplicationContext(), listFood));
  search.addTextChangedListener(new TextWatcher() {

   @Override
   public void onTextChanged(CharSequence arg0, int arg1, int arg2,
     int arg3) {
    // TODO Auto-generated method stub

   }

   @Override
   public void beforeTextChanged(CharSequence arg0, int arg1,
     int arg2, int arg3) {
    // TODO Auto-generated method stub

   }

   @Override
   public void afterTextChanged(Editable arg0) {
    // TODO Auto-generated method stub
    filtrer();
   }
  });

 }

On obtient comme résultat :




Pour le code finale , il est disponible sur mediafire:


Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.