Searchview filre une listview affiche données d'un serveur

jasminejas
Messages postés
6
Date d'inscription
jeudi 18 février 2016
Dernière intervention
29 mars 2016
- 29 mars 2016 à 10:00 - Dernière réponse : BunoCS
Messages postés
14220
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 29 mars 2016 à 15:34
Bonjour,
j'ai réalisé un code qui affiche des données qui se trouve dans un serveur , mon but maintenant de faire un filtre avec un searchview , je veux a chaque fois que je saisi une lettre j'aurai comme résultat tous les noms qui la contient vu que j'utilise un web service,pour cela j'ai réalisé le code PHP et j l'ai testé et s marche bien
Voici le code php
   <?php
 
  $dbName = 'localhost:D:/TEST.FDB';
  $dbUser = 'SYSDBA';
  $dbPswd = 'masterkey';
// ouvrir la cox a une bdd 
   @($db = ibase_connect($dbName, $dbUser, $dbPswd)) or $db = nul;
if($db == null) {
	//msg d erreur 
  echo ibase_errmsg();
} else {
	 //retourne le nombre d'enregistrements
 
  $sql = ibase_query($db, " select NAME FROM PRODUCTS WHERE NAME LIKE '%F%' ");
 
 
  //  lit une ligne dans une base
  while($row = ibase_fetch_object($sql))
	  //
 $output[]=$row;
  //Retourner la représentation JSON d''une valeur
  ibase_free_result ($sql) ;
  print(json_encode($output));
  //Fermer une connexion à une base de données
  ibase_close($db);
  }?>


se code la en résultat me donne tous les nom qui contient la lettre F (c'est qu'un simple essai) , mais dans mon cas je dois envoyé une données de android ""celle qui sera saisi dans l'android '

voila le code qui me permet de remplir la listview depuis le web service

import android.app.ListActivity;
import android.content.Intent;
import android.net.ParseException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
/**
 * Created by ${kahina} on 22/03/2016.
 */
public class Afficher_listCL extends ListActivity {
    Button btnlist,btnref;
    public void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listclient);
 
        btnlist = (Button) findViewById(R.id.btnRT1);
        btnlist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Afficher_listCL.this, AccueilClients.class);
                startActivity(intent);
            }
        });
 
        btnref = (Button) findViewById(R.id.btnref);
        btnref.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Afficher_listCL.this, Afficher_listCL.class);
                startActivity(intent);
            }
        });
        String result = null;
        InputStream is = null;
        JSONObject json_data = null;
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        ArrayList<String> donnees = new ArrayList<String>();
 
        try {
            //commandes httpClient
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://192.168.1.16/listCLIENT.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        } catch (Exception e) {
            Log.i("taghttppost", "" + e.toString());
            Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
        }
        //conversion de la réponse en chaine de caractère
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
 
            StringBuilder sb = new StringBuilder();
 
            String line = null;
 
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
 
            is.close();
 
            result = sb.toString();
        } catch (Exception e) {
            Log.i("tagconvertstr", "" + e.toString());
        }
        //recuperation des donnees json
        try {
            JSONArray jArray = new JSONArray(result);
 
            for (int i = 0; i < jArray.length(); i++) {
                json_data = jArray.getJSONObject(i);
                donnees.add(json_data.getString("NAME"));
                //r.add(json_data.getString("categorie"));
            }
            setListAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_expandable_list_item_1, donnees));
        } catch (JSONException e) {
            Log.i("tagjsonexp", "" + e.toString());
        } catch (ParseException e) {
            Log.i("tagjsonpars", "" + e.toString());
        }
 
 
    }
    }


Quelqu'un saurait-il m'aider a trouver une solution comment le réaliser ou m'orienter vers un bon tutoriel

Merci d'avance pour votre aide.
Afficher la suite 

Votre réponse

3 réponses

BunoCS
Messages postés
14220
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 29 mars 2016 à 15:04
0
Merci
Hello,

Ce n'est pas très clair...Que cherches-tu à faire? Qu'est-ce qui fonctionne aujourd'hui? Sur quoi bloques-tu?
Commenter la réponse de BunoCS
jasminejas
Messages postés
6
Date d'inscription
jeudi 18 février 2016
Dernière intervention
29 mars 2016
- 29 mars 2016 à 15:20
0
Merci
bonjour , alors se qui est réussi c'est d'afficher les données dans une listview avec le code que j'ai met avant , et je suis bloquer avec le filtre que j'arrive pas a réaliser le coté vu que le coté php est fait et tester et s marche bien
Commenter la réponse de jasminejas
BunoCS
Messages postés
14220
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 novembre 2018
- Modifié par BunoCS le 29/03/2016 à 15:34
0
Merci
2 manières de faire:
- lancer une requête HTTP à chaque saisie de caractère pour avoir les données à afficher
- lancer une seule requête au début pour récupérer toutes les données et mettre à jour ton adapter en fonction du texte saisi par l'utilisateur (en gros, faire le filtre en local)

@+ 
Buno, Modo CS-CCM 
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... 
The urgent is done, the impossible is underway. For miracles, provide for a delay...
Commenter la réponse de BunoCS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.