Назначение нескольких значений ответа Retrofit для массива - PullRequest
0 голосов
/ 26 мая 2018

Я изо всех сил пытаюсь реализовать решение для извлечения нескольких значений из моего ответа API (https://www.thecocktaildb.com/api/json/v1/1/lookup.php?i=13060) и присвоения определенных значений массиву.В частности, значения, strIngredient1, strIngredient2, strIngredient3 и т. Д ...

В настоящее время я создал класс коктейля POJO следующим образом:

public class Cocktail implements Serializable {

@SerializedName("idDrink")
@Expose
private String idDrink;
@SerializedName("strDrink")
@Expose
private String strDrink;
@SerializedName("strVideo")
@Expose
private Object strVideo;
@SerializedName("strCategory")
@Expose
private String strCategory;
@SerializedName("strIBA")
@Expose
private Object strIBA;
@SerializedName("strAlcoholic")
@Expose
private String strAlcoholic;
@SerializedName("strGlass")
@Expose
private String strGlass;
@SerializedName("strInstructions")
@Expose
private String strInstructions;
@SerializedName("strDrinkThumb")
@Expose
private String strDrinkThumb;
@SerializedName("strIngredient1")
@Expose
private String strIngredient1;
@SerializedName("strIngredient2")
@Expose
private String strIngredient2;
@SerializedName("strIngredient3")
@Expose
private String strIngredient3;
@SerializedName("strIngredient4")
@Expose
private String strIngredient4;
@SerializedName("strIngredient5")
@Expose
private String strIngredient5;
@SerializedName("strIngredient6")
@Expose
private String strIngredient6;
@SerializedName("strIngredient7")
@Expose
private String strIngredient7;
@SerializedName("strIngredient8")
@Expose
private String strIngredient8;
@SerializedName("strIngredient9")
@Expose
private String strIngredient9;
@SerializedName("strIngredient10")
@Expose
private String strIngredient10;
@SerializedName("strIngredient11")
@Expose
private String strIngredient11;
@SerializedName("strIngredient12")
@Expose
private String strIngredient12;
@SerializedName("strIngredient13")
@Expose
private String strIngredient13;
@SerializedName("strIngredient14")
@Expose
private String strIngredient14;
@SerializedName("strIngredient15")
@Expose
private String strIngredient15;
@SerializedName("strMeasure1")
@Expose
private String strMeasure1;
@SerializedName("strMeasure2")
@Expose
private String strMeasure2;
@SerializedName("strMeasure3")
@Expose
private String strMeasure3;
@SerializedName("strMeasure4")
@Expose
private String strMeasure4;
@SerializedName("strMeasure5")
@Expose
private String strMeasure5;
@SerializedName("strMeasure6")
@Expose
private String strMeasure6;
@SerializedName("strMeasure7")
@Expose
private String strMeasure7;
@SerializedName("strMeasure8")
@Expose
private String strMeasure8;
@SerializedName("strMeasure9")
@Expose
private String strMeasure9;
@SerializedName("strMeasure10")
@Expose
private String strMeasure10;
@SerializedName("strMeasure11")
@Expose
private String strMeasure11;
@SerializedName("strMeasure12")
@Expose
private String strMeasure12;
@SerializedName("strMeasure13")
@Expose
private String strMeasure13;
@SerializedName("strMeasure14")
@Expose
private String strMeasure14;
@SerializedName("strMeasure15")
@Expose
private String strMeasure15;
@SerializedName("dateModified")
@Expose
private String dateModified;

public String getIdDrink() {
    return idDrink;
}

public void setIdDrink(String idDrink) {
    this.idDrink = idDrink;
}

public String getStrDrink() {
    return strDrink;
}

public void setStrDrink(String strDrink) {
    this.strDrink = strDrink;
}

public Object getStrVideo() {
    return strVideo;
}

public void setStrVideo(Object strVideo) {
    this.strVideo = strVideo;
}

public String getStrCategory() {
    return strCategory;
}

public void setStrCategory(String strCategory) {
    this.strCategory = strCategory;
}

public Object getStrIBA() {
    return strIBA;
}

public void setStrIBA(Object strIBA) {
    this.strIBA = strIBA;
}

public String getStrAlcoholic() {
    return strAlcoholic;
}

public void setStrAlcoholic(String strAlcoholic) {
    this.strAlcoholic = strAlcoholic;
}

public String getStrGlass() {
    return strGlass;
}

public void setStrGlass(String strGlass) {
    this.strGlass = strGlass;
}

public String getStrInstructions() {
    return strInstructions;
}

public void setStrInstructions(String strInstructions) {
    this.strInstructions = strInstructions;
}

public String getStrDrinkThumb() {
    return strDrinkThumb;
}

public void setStrDrinkThumb(String strDrinkThumb) {
    this.strDrinkThumb = strDrinkThumb;
}

public String getStrIngredient1() {
    return strIngredient1;
}

public void setStrIngredient1(String strIngredient1) {
    this.strIngredient1 = strIngredient1;
}

public String getStrIngredient2() {
    return strIngredient2;
}

public void setStrIngredient2(String strIngredient2) {
    this.strIngredient2 = strIngredient2;
}

public String getStrIngredient3() {
    return strIngredient3;
}

public void setStrIngredient3(String strIngredient3) {
    this.strIngredient3 = strIngredient3;
}

public String getStrIngredient4() {
    return strIngredient4;
}

public void setStrIngredient4(String strIngredient4) {
    this.strIngredient4 = strIngredient4;
}

public String getStrIngredient5() {
    return strIngredient5;
}

public void setStrIngredient5(String strIngredient5) {
    this.strIngredient5 = strIngredient5;
}

public String getStrIngredient6() {
    return strIngredient6;
}

public void setStrIngredient6(String strIngredient6) {
    this.strIngredient6 = strIngredient6;
}

public String getStrIngredient7() {
    return strIngredient7;
}

public void setStrIngredient7(String strIngredient7) {
    this.strIngredient7 = strIngredient7;
}

public String getStrIngredient8() {
    return strIngredient8;
}

public void setStrIngredient8(String strIngredient8) {
    this.strIngredient8 = strIngredient8;
}

public String getStrIngredient9() {
    return strIngredient9;
}

public void setStrIngredient9(String strIngredient9) {
    this.strIngredient9 = strIngredient9;
}

public String getStrIngredient10() {
    return strIngredient10;
}

public void setStrIngredient10(String strIngredient10) {
    this.strIngredient10 = strIngredient10;
}

public String getStrIngredient11() {
    return strIngredient11;
}

public void setStrIngredient11(String strIngredient11) {
    this.strIngredient11 = strIngredient11;
}

public String getStrIngredient12() {
    return strIngredient12;
}

public void setStrIngredient12(String strIngredient12) {
    this.strIngredient12 = strIngredient12;
}

public String getStrIngredient13() {
    return strIngredient13;
}

public void setStrIngredient13(String strIngredient13) {
    this.strIngredient13 = strIngredient13;
}

public String getStrIngredient14() {
    return strIngredient14;
}

public void setStrIngredient14(String strIngredient14) {
    this.strIngredient14 = strIngredient14;
}

public String getStrIngredient15() {
    return strIngredient15;
}

public void setStrIngredient15(String strIngredient15) {
    this.strIngredient15 = strIngredient15;
}

public String getStrMeasure1() {
    return strMeasure1;
}

public void setStrMeasure1(String strMeasure1) {
    this.strMeasure1 = strMeasure1;
}

public String getStrMeasure2() {
    return strMeasure2;
}

public void setStrMeasure2(String strMeasure2) {
    this.strMeasure2 = strMeasure2;
}

public String getStrMeasure3() {
    return strMeasure3;
}

public void setStrMeasure3(String strMeasure3) {
    this.strMeasure3 = strMeasure3;
}

public String getStrMeasure4() {
    return strMeasure4;
}

public void setStrMeasure4(String strMeasure4) {
    this.strMeasure4 = strMeasure4;
}

public String getStrMeasure5() {
    return strMeasure5;
}

public void setStrMeasure5(String strMeasure5) {
    this.strMeasure5 = strMeasure5;
}

public String getStrMeasure6() {
    return strMeasure6;
}

public void setStrMeasure6(String strMeasure6) {
    this.strMeasure6 = strMeasure6;
}

public String getStrMeasure7() {
    return strMeasure7;
}

public void setStrMeasure7(String strMeasure7) {
    this.strMeasure7 = strMeasure7;
}

public String getStrMeasure8() {
    return strMeasure8;
}

public void setStrMeasure8(String strMeasure8) {
    this.strMeasure8 = strMeasure8;
}

public String getStrMeasure9() {
    return strMeasure9;
}

public void setStrMeasure9(String strMeasure9) {
    this.strMeasure9 = strMeasure9;
}

public String getStrMeasure10() {
    return strMeasure10;
}

public void setStrMeasure10(String strMeasure10) {
    this.strMeasure10 = strMeasure10;
}

public String getStrMeasure11() {
    return strMeasure11;
}

public void setStrMeasure11(String strMeasure11) {
    this.strMeasure11 = strMeasure11;
}

public String getStrMeasure12() {
    return strMeasure12;
}

public void setStrMeasure12(String strMeasure12) {
    this.strMeasure12 = strMeasure12;
}

public String getStrMeasure13() {
    return strMeasure13;
}

public void setStrMeasure13(String strMeasure13) {
    this.strMeasure13 = strMeasure13;
}

public String getStrMeasure14() {
    return strMeasure14;
}

public void setStrMeasure14(String strMeasure14) {
    this.strMeasure14 = strMeasure14;
}

public String getStrMeasure15() {
    return strMeasure15;
}

public void setStrMeasure15(String strMeasure15) {
    this.strMeasure15 = strMeasure15;
}

public String getDateModified() {
    return dateModified;
}

public void setDateModified(String dateModified) {
    this.dateModified = dateModified;
}

И мой вызов API выглядит следующим образом:

@Override
protected Cocktail doInBackground(Cocktail... cocktails) {

    Call<Cocktails> call = mApiService.getCocktail(id);
    try {
        Response<Cocktails> response = call.execute();
        this.cocktails = response.body();
        this.cocktail = this.cocktails.getCocktail().get(0);

        Log.i(TAG, "Success: " + response.body().toString());
    } catch (IOException e) {
        Log.e(TAG, "IOException: " + e);
        e.printStackTrace();
    } catch (IllegalStateException e) {
        Log.e(TAG, "IllegalStateException: " + e);
        e.printStackTrace();
    }

    return cocktail;
}

Я знаю достаточно, чтобы понять, что большое количество переменных, ингредиентов и мер (многие из которых пусты) - это неправильный подход, но я изо всех сил пытаюсь найти решение с модификацией для создания массива этих значений.Я не нашел способа присвоить несколько SerializedNames одной переменной массива?

Опция, которая выскакивает у меня, заключается в циклическом отклике, извлекающем значения ключей в onSuccess, но, похоже, это противоречит простотеиспользования модернизации?

...