Chargé plusieurs table avec Retrofit

Fermé
micropro7 - Modifié le 25 déc. 2017 à 07:20
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 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>

1 réponse

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
2 janv. 2018 à 10:44
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
0