Recuperation de données d'un serveur distant dans android
jasminejas
Messages postés6Date d'inscriptionjeudi 18 février 2016StatutMembreDernière intervention29 mars 2016
-
23 févr. 2016 à 09:10
BunoCS
Messages postés15356Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention13 mars 2023
-
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
// 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); } }); } }}
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
BunoCS
Messages postés15356Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention13 mars 2023102 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
BunoCS
Messages postés15356Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention13 mars 2023102 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.
jasminejas
Messages postés6Date d'inscriptionjeudi 18 février 2016StatutMembreDernière intervention29 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
jasminejas
Messages postés6Date d'inscriptionjeudi 18 février 2016StatutMembreDernière intervention29 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
BunoCS
Messages postés15356Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention13 mars 2023102 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?
jasminejas
Messages postés6Date d'inscriptionjeudi 18 février 2016StatutMembreDernière intervention29 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