如何在Adapter中设置My Json Value

时间:2017-12-14 10:22:55

标签: java android arrays json

我有两个JsonArray,其中有JsonObject我已经获得了每个值的字符串,但问题是,当我将i传递给适配器时,我得到indexOutofbound exeption,因为我的值正在我的对象中存储所以任何人都可以帮助我如何将我的数据发送到Object,以便我可以充气到recyclerView。

private void callola() {
    progressDialog = new ProgressDialog(CabBookingActivity.this);
    progressDialog.setMessage("Loading ...");
    progressDialog.setCancelable(false);
    progressDialog.show();

    final RequestQueue queue = Volley.newRequestQueue(CabBookingActivity.this);
    String url = "https://www.reboundindia.com/app/application/ola/ride_estimate.php";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.setCancelable(true);
                    progressDialog.dismiss();
                    Log.e("sushil Call ola response", response);

                    try {
                        JSONObject mainObj = new JSONObject(response);
                        arrayList = new ArrayList<>();
                        String result = mainObj.getString("result");
                        int i, j;
                        ArrayList categoriess, Ride;

                        if (result.equals("606")) {
                            JSONObject message = mainObj.getJSONObject("message");
                            categories = message.getJSONArray("categories");
                            ride_estimate = message.getJSONArray("ride_estimate");

                            // JSONArray ride_estimate = message.getJSONArray("ride_estimate");
                            for (i = 0; i < categories.length(); i++) {

                                Log.e("sushil", String.valueOf(i));
                                jsonObject = categories.getJSONObject(i);
                                id = jsonObject.getString("id");
                                display_name = jsonObject.getString("display_name");
                                image = jsonObject.getString("image");
                                eta = jsonObject.getString("eta");
                                Log.e("OutPut", id + " " + eta + " " + image + " " + amount_min + " " + amount_max);

                            }
                            for (j = 0; j < ride_estimate.length(); j++) {
                                Log.e("sushil", String.valueOf(j));
                                rideestimate = ride_estimate.getJSONObject(j);
                                distance = rideestimate.getString("distance");
                                amount_min = rideestimate.getString("amount_min");
                                amount_max = rideestimate.getString("amount_max");
                                category = rideestimate.getString("category");

                            }



                        }

                        OlaUberModel olaUberModel = new OlaUberModel(category, display_name, amount_min, eta, image, amount_max);
                        arrayList.add(olaUberModel);
                        Log.e("sushil ride_estimate", distance + " " + amount_min + " " + amount_max);
                        AdapterOlaUber adapterOlaUber = new AdapterOlaUber(context, arrayList, CabBookingActivity.this);
                        recyclerView.setAdapter(adapterOlaUber);

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            progressDialog.dismiss();
            Log.e("error", error.toString());

        }


    }) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            Map<String, String> params = new HashMap<>();

            params.put("pickup_lat", "" + pickLat);
            params.put("pickup_lng", "" + pickLong);
            params.put("drop_lat", String.valueOf(dropLat));
            params.put("drop_lng", String.valueOf(dropLong));
            params.put("category", "all");
            params.put("token", token);
            Log.e("sushil param", String.valueOf(params));

            return params;
        }
    };
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(
            90000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    queue.add(stringRequest);
}

这是我的JSONRESPONSE

{  
   "result":"606",
   "message":{  
      "categories":[  
         {  
            "id":"micro",
            "display_name":"Micro",
            "currency":"INR",
            "distance_unit":"kilometre",
            "time_unit":"minute",
            "eta":5,
            "distance":"0.7",
            "ride_later_enabled":"true",
            "image":"http:\/\/d1foexe15giopy.cloudfront.net\/micro.png",
            "cancellation_policy":{  
               "cancellation_charge":50,
               "currency":"INR",
               "cancellation_charge_applies_after_time":5,
               "time_unit":"minute"
            },
            "fare_breakup":[  
               {  
                  "type":"flat_rate",
                  "minimum_distance":0,
                  "minimum_time":0,
                  "base_fare":50,
                  "minimum_fare":60,
                  "cost_per_distance":6,
                  "waiting_cost_per_minute":0,
                  "ride_cost_per_minute":1.5,
                  "surcharge":[  

                  ],
                  "rates_lower_than_usual":false,
                  "rates_higher_than_usual":false
               }
            ]
         },
         {  },
         {  },
         {  },
         {  },
         {  },
         {  },
         {  },
         {  }
      ],
      "ride_estimate":[  
         {  
            "category":"prime_play",
            "distance":3.99,
            "travel_time_in_minutes":30,
            "amount_min":155,
            "amount_max":163,
            "discounts":{  
               "discount_type":null,
               "discount_code":null,
               "discount_mode":null,
               "discount":0,
               "cashback":0
            }
         },
         {  },
         {  },
         {  },
         {  },
         {  },
         {  },
         {  }
      ]
   }
}

我的问题是如何在模型中发送数据。 我的模型应包含数据,如id,displayName,amountMin,eta,image,amountMax

4 个答案:

答案 0 :(得分:0)

首先,你需要为category和ride_estimate制作两个不同的模型。因为它们都在不同的循环中。也试试这个

for (j = 0; j < ride_estimate.length(); j++) {
                            Log.e("sushil", String.valueOf(j));
                            rideestimate = ride_estimate.getJSONObject(j);
                            distance = rideestimate.getString("distance");
                            amount_min = rideestimate.getString("amount_min");
                            amount_max = rideestimate.getString("amount_max");
                            category = rideestimate.getString("category");

OlaUberModel olaUberModel = new OlaUberModel(category,display_name,amount_min,eta,image,amount_max);                         arrayList.add(olaUberModel);                             }

可能这对你有帮助.. 谢谢!

答案 1 :(得分:0)

替换

eta = jsonObject.getString("eta");

int eta = jsonObject.getInt("eta");

答案 2 :(得分:0)

基于任何驾驶室类型的ID&#34; prime&#34;你可以获取图像。说什么

答案 3 :(得分:0)

根据您的数据创建一些类

-----------------------------------com.example.CancellationPolicy.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class CancellationPolicy {

@SerializedName("cancellation_charge")
@Expose
private Integer cancellationCharge;
@SerializedName("currency")
@Expose
private String currency;
@SerializedName("cancellation_charge_applies_after_time")
@Expose
private Integer cancellationChargeAppliesAfterTime;
@SerializedName("time_unit")
@Expose
private String timeUnit;

public Integer getCancellationCharge() {
return cancellationCharge;
}

public void setCancellationCharge(Integer cancellationCharge) {
this.cancellationCharge = cancellationCharge;
}

public String getCurrency() {
return currency;
}

public void setCurrency(String currency) {
this.currency = currency;
}

public Integer getCancellationChargeAppliesAfterTime() {
return cancellationChargeAppliesAfterTime;
}

public void setCancellationChargeAppliesAfterTime(Integer cancellationChargeAppliesAfterTime) {
this.cancellationChargeAppliesAfterTime = cancellationChargeAppliesAfterTime;
}

public String getTimeUnit() {
return timeUnit;
}

public void setTimeUnit(String timeUnit) {
this.timeUnit = timeUnit;
}

}
-----------------------------------com.example.Category.java-----------------------------------

package com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Category {

@SerializedName("id")
@Expose
private String id;
@SerializedName("display_name")
@Expose
private String displayName;
@SerializedName("currency")
@Expose
private String currency;
@SerializedName("distance_unit")
@Expose
private String distanceUnit;
@SerializedName("time_unit")
@Expose
private String timeUnit;
@SerializedName("eta")
@Expose
private Integer eta;
@SerializedName("distance")
@Expose
private String distance;
@SerializedName("ride_later_enabled")
@Expose
private String rideLaterEnabled;
@SerializedName("image")
@Expose
private String image;
@SerializedName("cancellation_policy")
@Expose
private CancellationPolicy cancellationPolicy;
@SerializedName("fare_breakup")
@Expose
private List<FareBreakup> fareBreakup = null;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getDisplayName() {
return displayName;
}

public void setDisplayName(String displayName) {
this.displayName = displayName;
}

public String getCurrency() {
return currency;
}

public void setCurrency(String currency) {
this.currency = currency;
}

public String getDistanceUnit() {
return distanceUnit;
}

public void setDistanceUnit(String distanceUnit) {
this.distanceUnit = distanceUnit;
}

public String getTimeUnit() {
return timeUnit;
}

public void setTimeUnit(String timeUnit) {
this.timeUnit = timeUnit;
}

public Integer getEta() {
return eta;
}

public void setEta(Integer eta) {
this.eta = eta;
}

public String getDistance() {
return distance;
}

public void setDistance(String distance) {
this.distance = distance;
}

public String getRideLaterEnabled() {
return rideLaterEnabled;
}

public void setRideLaterEnabled(String rideLaterEnabled) {
this.rideLaterEnabled = rideLaterEnabled;
}

public String getImage() {
return image;
}

public void setImage(String image) {
this.image = image;
}

public CancellationPolicy getCancellationPolicy() {
return cancellationPolicy;
}

public void setCancellationPolicy(CancellationPolicy cancellationPolicy) {
this.cancellationPolicy = cancellationPolicy;
}

public List<FareBreakup> getFareBreakup() {
return fareBreakup;
}

public void setFareBreakup(List<FareBreakup> fareBreakup) {
this.fareBreakup = fareBreakup;
}

}
-----------------------------------com.example.Discounts.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Discounts {

@SerializedName("discount_type")
@Expose
private Object discountType;
@SerializedName("discount_code")
@Expose
private Object discountCode;
@SerializedName("discount_mode")
@Expose
private Object discountMode;
@SerializedName("discount")
@Expose
private Integer discount;
@SerializedName("cashback")
@Expose
private Integer cashback;

public Object getDiscountType() {
return discountType;
}

public void setDiscountType(Object discountType) {
this.discountType = discountType;
}

public Object getDiscountCode() {
return discountCode;
}

public void setDiscountCode(Object discountCode) {
this.discountCode = discountCode;
}

public Object getDiscountMode() {
return discountMode;
}

public void setDiscountMode(Object discountMode) {
this.discountMode = discountMode;
}

public Integer getDiscount() {
return discount;
}

public void setDiscount(Integer discount) {
this.discount = discount;
}

public Integer getCashback() {
return cashback;
}

public void setCashback(Integer cashback) {
this.cashback = cashback;
}

}
-----------------------------------com.example.Example.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Example {

@SerializedName("result")
@Expose
private String result;
@SerializedName("message")
@Expose
private Message message;

public String getResult() {
return result;
}

public void setResult(String result) {
this.result = result;
}

public Message getMessage() {
return message;
}

public void setMessage(Message message) {
this.message = message;
}

}
-----------------------------------com.example.FareBreakup.java-----------------------------------

package com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class FareBreakup {

@SerializedName("type")
@Expose
private String type;
@SerializedName("minimum_distance")
@Expose
private Integer minimumDistance;
@SerializedName("minimum_time")
@Expose
private Integer minimumTime;
@SerializedName("base_fare")
@Expose
private Integer baseFare;
@SerializedName("minimum_fare")
@Expose
private Integer minimumFare;
@SerializedName("cost_per_distance")
@Expose
private Integer costPerDistance;
@SerializedName("waiting_cost_per_minute")
@Expose
private Integer waitingCostPerMinute;
@SerializedName("ride_cost_per_minute")
@Expose
private Double rideCostPerMinute;
@SerializedName("surcharge")
@Expose
private List<Object> surcharge = null;
@SerializedName("rates_lower_than_usual")
@Expose
private Boolean ratesLowerThanUsual;
@SerializedName("rates_higher_than_usual")
@Expose
private Boolean ratesHigherThanUsual;

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public Integer getMinimumDistance() {
return minimumDistance;
}

public void setMinimumDistance(Integer minimumDistance) {
this.minimumDistance = minimumDistance;
}

public Integer getMinimumTime() {
return minimumTime;
}

public void setMinimumTime(Integer minimumTime) {
this.minimumTime = minimumTime;
}

public Integer getBaseFare() {
return baseFare;
}

public void setBaseFare(Integer baseFare) {
this.baseFare = baseFare;
}

public Integer getMinimumFare() {
return minimumFare;
}

public void setMinimumFare(Integer minimumFare) {
this.minimumFare = minimumFare;
}

public Integer getCostPerDistance() {
return costPerDistance;
}

public void setCostPerDistance(Integer costPerDistance) {
this.costPerDistance = costPerDistance;
}

public Integer getWaitingCostPerMinute() {
return waitingCostPerMinute;
}

public void setWaitingCostPerMinute(Integer waitingCostPerMinute) {
this.waitingCostPerMinute = waitingCostPerMinute;
}

public Double getRideCostPerMinute() {
return rideCostPerMinute;
}

public void setRideCostPerMinute(Double rideCostPerMinute) {
this.rideCostPerMinute = rideCostPerMinute;
}

public List<Object> getSurcharge() {
return surcharge;
}

public void setSurcharge(List<Object> surcharge) {
this.surcharge = surcharge;
}

public Boolean getRatesLowerThanUsual() {
return ratesLowerThanUsual;
}

public void setRatesLowerThanUsual(Boolean ratesLowerThanUsual) {
this.ratesLowerThanUsual = ratesLowerThanUsual;
}

public Boolean getRatesHigherThanUsual() {
return ratesHigherThanUsual;
}

public void setRatesHigherThanUsual(Boolean ratesHigherThanUsual) {
this.ratesHigherThanUsual = ratesHigherThanUsual;
}

}
-----------------------------------com.example.Message.java-----------------------------------

package com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Message {

@SerializedName("categories")
@Expose
private List<Category> categories = null;
@SerializedName("ride_estimate")
@Expose
private List<RideEstimate> rideEstimate = null;

public List<Category> getCategories() {
return categories;
}

public void setCategories(List<Category> categories) {
this.categories = categories;
}

public List<RideEstimate> getRideEstimate() {
return rideEstimate;
}

public void setRideEstimate(List<RideEstimate> rideEstimate) {
this.rideEstimate = rideEstimate;
}

}
-----------------------------------com.example.RideEstimate.java-----------------------------------

package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class RideEstimate {

@SerializedName("category")
@Expose
private String category;
@SerializedName("distance")
@Expose
private Double distance;
@SerializedName("travel_time_in_minutes")
@Expose
private Integer travelTimeInMinutes;
@SerializedName("amount_min")
@Expose
private Integer amountMin;
@SerializedName("amount_max")
@Expose
private Integer amountMax;
@SerializedName("discounts")
@Expose
private Discounts discounts;

public String getCategory() {
return category;
}

public void setCategory(String category) {
this.category = category;
}

public Double getDistance() {
return distance;
}

public void setDistance(Double distance) {
this.distance = distance;
}

public Integer getTravelTimeInMinutes() {
return travelTimeInMinutes;
}

public void setTravelTimeInMinutes(Integer travelTimeInMinutes) {
this.travelTimeInMinutes = travelTimeInMinutes;
}

public Integer getAmountMin() {
return amountMin;
}

public void setAmountMin(Integer amountMin) {
this.amountMin = amountMin;
}

public Integer getAmountMax() {
return amountMax;
}

public void setAmountMax(Integer amountMax) {
this.amountMax = amountMax;
}

public Discounts getDiscounts() {
return discounts;
}

public void setDiscounts(Discounts discounts) {
this.discounts = discounts;
}

}

现在编译一个库编译com.google.code.gson:gson:2.8.2&#39; 然后写几行以在课堂上填写数据

Gson gson = new Gson(); 
Example example = gson.fromJson(mainObj, Example.class);

现在您可以尝试像这样获取您的类别

example.getCategories();