Menu

Chargé plusieurs table avec Retrofit

micropro7 - 25 déc. 2017 à 06:58 - Dernière réponse : BunoCS 13903 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 juin 2018 Dernière intervention
- 2 janv. 2018 à 10:44
Bonjour et joyeux noël à tous!

J'ai un formulaire qui permet d'enregistrer les produits qu'on a vendu a un client

On choisi un produit, un client et on valide


J'ai donc 2 spinner (spinner_produit et spinner_client) que je dois remplir avec chacun sa source de données provenant d'une table.

Je veux récupérer d'un seul coup les deux données en json et les afficher dans mon formulaire.

Détail:
coté serveur php
tables : produits et clients

et voici un json retourné

serveur_data.json

{"listeProduits":
[
{"produitId":"1","produitNom":"Smartphone"},
{"produitId":"1","produitNom":"PC PORTABLE"}
]
},
{"listeClient":
[
{"clientId":"1","clientNom":"Alida"},
{"clientId":"2","clientNom":"Fredy"},
{"clientId":"3","clientNom":"Fredy"}
]
}



coté android:
les models

//le model Produit 
public class Produit {
    String produitId, produitNom;

    public Produit(String produitId, String produitNom) {
        this.produitId = produitId;
        this.produitNom = produitNom;
    }

    @Override
    public String toString() {
        return produitNom;
    }

}

//le model Client
public class Client {
    String clientId, clientNom;

    public Client(String clientId, String clientNom) {
        this.clientId = clientId;
        this.clientNom = clientNom;
    }

    @Override
    public String toString() {
        return clientNom;
    }

}




Coté Retrofit

GetDataService.java
public interface GetDataService {
  
    @GET("index.php")
    Call<DataManager> loadInitialData();


}

DataManager.java
public class DataManager {

    @SerializedName("listeClients")
    private ArrayList<Client> listeClients;

    @SerializedName("listeProduits")
    private ArrayList<Produit> listeProduits;
 
 
 public ArrayList<Client> getListeClients() {
        return listeClients;
    }


    public ArrayList<Produit> getListeProduits() {
        return listeProduits;
    }
 
 
}


dans MainActivity.java

private ArrayList<Client> listeClients ;
private ArrayList<Produit> listeProduits ;

...

call.enqueue(new Callback<DataManager>() {
            @Override
            public void onResponse(Call<DataManager> call, Response<DataManager> response) {
                listeClients = response.body().getListeClients());
                listeProduits = response.body().getListeProduits());
            }

            @Override
            public void onFailure(Call<DataManager> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
            }
});



Merci de me donner un coup de main

Message édité par la modération
Merci d'utiliser la coloration syntaxique lorsque du code source est
présent dans votre message afin de rendre celui-ci plus lisible.
Plus d'informations sur cet article : Utilisation des balises <code></code>
Afficher la suite 

Votre réponse

1 réponse

BunoCS 13903 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 juin 2018 Dernière intervention - 2 janv. 2018 à 10:44
0
Merci
Bonjour,

Quel est le souci? Tu ne récupères pas le JSON?
Attention, dans ton modèle, il faut bien indiquer avec exactitude le nom du champ JSON dans l'annotation @SerializedName() -> voir listeClient
Commenter la réponse de BunoCS