Recuperation de données d'un serveur distant dans android

jasminejas Messages postés 6 Date d'inscription jeudi 18 février 2016 Statut Membre Dernière intervention 29 mars 2016 - 23 févr. 2016 à 09:10
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 23 févr. 2016 à 15:29
bnjour tt le monde , c ma tte première question ici , j espère avoir des réponse :
je développe une application android qui a la base de données dans un serveur distant firebird , alors pour le moment j'ai reussi a recuperer une table de cette base avec le code suivan
   public class afficher extends ListActivity {

// Progress Dialog
private ProgressDialog pDialog;

// Creating JSON Parser object
JSONParser jParser = new JSONParser();

ArrayList<HashMap<String, String>> productsList;

// url to get all products list
private static String url_all_products = "http://192.168.1.16/get_product_details.php";

// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_PRODUCTS = "products";
private static final String TAG_PID = "pid";
private static final String TAG_NAME = "name";

// products JSONArray
JSONArray products = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.all_products);

// Hashmap for ListView
productsList = new ArrayList<HashMap<String, String>>();

// Loading products in Background Thread
new LoadAllProducts().execute();

// Get listview
ListView lv = getListView();

// on seleting single product
// launching Edit Product Screen
lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String pid = ((TextView) view.findViewById(R.id.pid)).getText()
.toString();

// Starting new intent
Intent in = new Intent(getApplicationContext(),
EditProductsActivity.class);
// sending pid to next activity
in.putExtra(TAG_PID, pid);

// starting new activity and expecting some response back
startActivityForResult(in, 100);
}
});

}

// Response from Edit Product Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// if result code 100
if (resultCode == 100) {
// if result code 100 is received
// means user edited/deleted product
// reload this screen again
Intent intent = getIntent();
finish();
startActivity(intent);
}

}

/**
  • Background Async Task to Load all product by making HTTP Request * */ class LoadAllProducts extends AsyncTask<String, String, String> { /** * Before starting background thread Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(afficher.this); pDialog.setMessage("Loading products. Please wait..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * getting All products from url * */ protected String doInBackground(String... args) { // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); // getting JSON string from URL JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params); // Check your log cat for JSON reponse Log.d("All Products: ", json.toString()); try { // Checking for SUCCESS TAG int success = json.getInt(TAG_SUCCESS); if (success == 1) { // products found // Getting Array of Products products = json.getJSONArray(TAG_PRODUCTS); // looping through All Products for (int i = 0; i < products.length(); i++) { JSONObject c = products.getJSONObject(i); // Storing each json item in variable String id = c.getString(TAG_PID); String name = c.getString(TAG_NAME); // creating new HashMap HashMap<String, String> map = new HashMap<String, String>(); // adding each child node to HashMap key => value map.put(TAG_PID, id); map.put(TAG_NAME, name); // adding HashList to ArrayList productsList.add(map); } } //else { // no products found // Launch Add New product Activity // Intent i = new Intent(getApplicationContext(), // NewProductActivity.class); // Closing all previous activities // i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // startActivity(i); // } } catch (JSONException e) { e.printStackTrace(); }
    return null; } /** * After completing background task Dismiss the progress dialog * **/ protected void onPostExecute(String file_url) { // dismiss the dialog after getting all products pDialog.dismiss(); // updating UI from Background Thread runOnUiThread(new Runnable() { public void run() { /** * Updating parsed JSON data into ListView * */ ListAdapter adapter = new SimpleAdapter( afficher.this, productsList, R.layout.list_item, new String[] { TAG_PID, TAG_NAME}, new int[] { R.id.pid, R.id.name }); // updating listview setListAdapter(adapter); } }); } }}




le resulta qui s'affiche est le suivan


[{"ID":11,"NAME":"CC","CLIENT":"SIAD","PRODUIT":"PCFACT"},{"ID":8,"NAME":"SALU","CLIENT":"VAMAG","PRODUIT":"PC DELL"},{"ID":68852,"NAME":"BNJR","CLIENT":"ENEM","PRODUIT":"IMPR"},{"ID":22,"NAME":"BNSR","CLIENT":"#KA214","PRODUIT":"SCANER"},{"ID":44,"NAME":"poki","CLIENT":"moi","PRODUIT":"ananas"}] """"


donc ma table s'affiche comm ell est dans le serveur ,, mai moi s que j vx c d'afficher chaque champ a sa place genre la liste des client s'affiche seul , si j saisi un nom j'aurai les detail d s client seul aussi ,si j vx la liste des produit j'aurai que la liste des prosuit ..............mai vu que j ss debutante j sai pa comment faire j ss bloqué jai bcp essyé ; alors svp si ya qlq un ki peu m orienté et me mentré comment reussir a faire cela , je vx comprendre le code et faire moi mm et pa d copier collé svp j ss bloquééé aidez moiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii



merci a l avance

4 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
23 févr. 2016 à 15:29
Alors, d'après ce que je comprends, ton webservice te retourne une liste d'objets JSON. Il te faut donc parser la réponse pour créer ton modèle de données. Regarde Retrofit qui va te simplifier la vie.
Une fois que tu auras ta liste d'objets, c'est assez simple: il faudra parcourir la liste, récupérer le nom du client et afficher la liste ainsi obtenue
2
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
23 févr. 2016 à 09:34
Bonjour,

Quelques remarques:
- pas d'écriture SMS! C'est illisible et contre-productif! Je passe plus de temps à "décoder" ce que tu essaies de dire que ton code
- rien n'est magique: tu récupères des données "brutes" et donc c'est à toi de rendre l'affichage "joli": cela se fait avec des adapters, des vues unitaires pour chaque item de ta liste, etc.
0
jasminejas Messages postés 6 Date d'inscription jeudi 18 février 2016 Statut Membre Dernière intervention 29 mars 2016
23 févr. 2016 à 13:14
qu'est se qui n'est pas lisible et pour quoi passé plus de temps pour décoder , stp tu peut être un peut plus claire dans ta réponse par apport a ma question si tu veux bien sur ,merci
0
jasminejas Messages postés 6 Date d'inscription jeudi 18 février 2016 Statut Membre Dernière intervention 29 mars 2016
23 févr. 2016 à 13:17
je sais que ma question est bête pour vous peu être mais j ss débutante donc j’ai juste besoin d'une petite orientation
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
23 févr. 2016 à 13:35
donc ma table s'affiche comm ell est dans le serveur ,, mai moi s que j vx c d'afficher chaque champ a sa place genre la liste des client s'affiche seul , si j saisi un nom j'aurai les detail d s client seul aussi ,si j vx la liste des produit j'aurai que la liste des prosuit ..............mai vu que j ss debutante j sai pa comment faire j ss bloqué jai bcp essyé ; alors svp si ya qlq un ki peu m orienté et me mentré comment reussir a faire cela , je vx comprendre le code et faire moi mm et pa d copier collé svp j ss bloquééé aidez moiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
C'est cette partie là que je n'ai pas compris. Peux-tu expliquer clairement ce que tu cherches à faire?
0
jasminejas Messages postés 6 Date d'inscription jeudi 18 février 2016 Statut Membre Dernière intervention 29 mars 2016
23 févr. 2016 à 14:34
alors j'ai des table dans ma base de données firebird jai (client , produit ,achat,commande ...........) et dans chaque table ya plusieurs champ et dans mon application j'ai besoin d'afficher chaque champ a part, par exemple de la table client j'ai besoin d'afficher que les nom de client quand j clic sur le bouton " list client " et puis je dois cliqué sur un des client et il me mène vers une autre activité pour avoir les détail de se client , mais moi se que j'ai réussi a faire jusqu’à maintenant c'est d'afficher toute la table dans un textview .....j’espère que je suis un peu plus claire et un grand merci de me données un peut de votre temps
0
Rejoignez-nous