【问题标题】:How to fetch array from array and set it to recyclerview?如何从数组中获取数组并将其设置为recyclerview?
【发布时间】:2018-02-01 06:59:17
【问题描述】:

I have to display data on single recyclerview from both arrays. 当我从菜单中获取数据时,我只从菜单中获取最后一个数据。如何从菜单中获取所有数据并将其设置在 RecyclerView 上。

这是我的代码:

JSONObject jsono = new JSONObject(response);
JSONArray jarray = jsono.getJSONArray("data");
for (int i = 0; i < jarray.length(); i++) {
    JSONObject object = jarray.getJSONObject(i);

    Username= object.getString("name");
    resID = object.getString("id");


    JSONArray jarray1 = object.getJSONArray("menu");
    for (int j = 0; j < jarray1.length(); j++) {

        JSONObject object1 = jarray1.getJSONObject(j);
        Proname = object1.getString("menu_name");
        Timing = object1.getString("collection_time");
        Price = object1.getString("menu_rate");
        Quantity = object1.getString("quantity_left");
        Proimage = object1.getString("img1");
        Availimg = object1.getString("img2");
        Fav = object1.getString("img3");
        menuID = object1.getString("id");

        Foodtype = object1.getString("food_type");

}

rcview.setAdapter(homeadapter);
homeadapter.notifyDataSetChanged();

【问题讨论】:

  • 否 @NirmalPrajapat 它只会存储菜单中存储的最后一个值。
  • 请发布您的 POJO 类主页。
  • 它仍然使用 Saurabh 的代码获取唯一的最后一个数据。使用我的代码,它正在重复数组菜单中的值。这次不重复,只给出最后一个值。
  • @Zankrut Parmar 的回答是对的。
  • 如果回答对您有帮助,请将其标记为已接受,以便用户从中获得帮助。

标签: java android json jsonparser


【解决方案1】:

您可以使用库 Gson 来简单地解析数据。 https://github.com/google/gson

String founderJson = "[{'name': 'Christian','flowerCount': 1}, {'name': 'Marcus', 'flowerCount': 3}, {'name': 'Norman', 'flowerCount': 2}]";

Gson gson = new Gson();

Type founderListType = new TypeToken<ArrayList<Founder>>(){}.getType();

List<Founder> founderList = gson.fromJson(founderJson, founderListType); 

【讨论】:

    【解决方案2】:

    你的家庭模型看起来像这样

    public class Data {
    
    private String id;
    private String name;
    private String position;
    private String storeName;
    private String city;
    private String address;
    private String latitude;
    private String longtitude;
    private String phone1;
    private String phone2;
    private String email;
    private String password;
    private String typeOfCuisine;
    private String openingDate;
    private String openingDays;
    private String storeCloseTime;
    private String website;
    private String fbUrl;
    private String otherInfo;
    private String date;
    private String lastUpdated;
    private String logo;
    private String zip;
    private String favorite;
    private String regStatus;
    private String regCode;
    private List<Menu> menu = null;
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
    
    public String getId() {
        return id;
    }
    
    public void setId(String id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getPosition() {
        return position;
    }
    
    public void setPosition(String position) {
        this.position = position;
    }
    
    public String getStoreName() {
        return storeName;
    }
    
    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }
    
    public String getCity() {
        return city;
    }
    
    public void setCity(String city) {
        this.city = city;
    }
    
    public String getAddress() {
        return address;
    }
    
    public void setAddress(String address) {
        this.address = address;
    }
    
    public String getLatitude() {
        return latitude;
    }
    
    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }
    
    public String getLongtitude() {
        return longtitude;
    }
    
    public void setLongtitude(String longtitude) {
        this.longtitude = longtitude;
    }
    
    public String getPhone1() {
        return phone1;
    }
    
    public void setPhone1(String phone1) {
        this.phone1 = phone1;
    }
    
    public String getPhone2() {
        return phone2;
    }
    
    public void setPhone2(String phone2) {
        this.phone2 = phone2;
    }
    
    public String getEmail() {
        return email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
    
    public String getPassword() {
        return password;
    }
    
    public void setPassword(String password) {
        this.password = password;
    }
    
    public String getTypeOfCuisine() {
        return typeOfCuisine;
    }
    
    public void setTypeOfCuisine(String typeOfCuisine) {
        this.typeOfCuisine = typeOfCuisine;
    }
    
    public String getOpeningDate() {
        return openingDate;
    }
    
    public void setOpeningDate(String openingDate) {
        this.openingDate = openingDate;
    }
    
    public String getOpeningDays() {
        return openingDays;
    }
    
    public void setOpeningDays(String openingDays) {
        this.openingDays = openingDays;
    }
    
    public String getStoreCloseTime() {
        return storeCloseTime;
    }
    
    public void setStoreCloseTime(String storeCloseTime) {
        this.storeCloseTime = storeCloseTime;
    }
    
    public String getWebsite() {
        return website;
    }
    
    public void setWebsite(String website) {
        this.website = website;
    }
    
    public String getFbUrl() {
        return fbUrl;
    }
    
    public void setFbUrl(String fbUrl) {
        this.fbUrl = fbUrl;
    }
    
    public String getOtherInfo() {
        return otherInfo;
    }
    
    public void setOtherInfo(String otherInfo) {
        this.otherInfo = otherInfo;
    }
    
    public String getDate() {
        return date;
    }
    
    public void setDate(String date) {
        this.date = date;
    }
    
    public String getLastUpdated() {
        return lastUpdated;
    }
    
    public void setLastUpdated(String lastUpdated) {
        this.lastUpdated = lastUpdated;
    }
    
    public String getLogo() {
        return logo;
    }
    
    public void setLogo(String logo) {
        this.logo = logo;
    }
    
    public String getZip() {
        return zip;
    }
    
    public void setZip(String zip) {
        this.zip = zip;
    }
    
    public String getFavorite() {
        return favorite;
    }
    
    public void setFavorite(String favorite) {
        this.favorite = favorite;
    }
    
    public String getRegStatus() {
        return regStatus;
    }
    
    public void setRegStatus(String regStatus) {
        this.regStatus = regStatus;
    }
    
    public String getRegCode() {
        return regCode;
    }
    
    public void setRegCode(String regCode) {
        this.regCode = regCode;
    }
    
    public List<Menu> getMenu() {
        return menu;
    }
    
    public void setMenu(List<Menu> menu) {
        this.menu = menu;
    }
    
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }
    
    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }
    }
    

    还有这样的菜单模型

    public class Menu {
    
    private String id;
    private String restId;
    private String menuRate;
    private String collectionTime;
    private String quantityLeft;
    private String foodType;
    private String img1;
    private String img2;
    private String img3;
    private String date;
    private String menuName;
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
    
    public String getId() {
        return id;
    }
    
    public void setId(String id) {
        this.id = id;
    }
    
    public String getRestId() {
        return restId;
    }
    
    public void setRestId(String restId) {
        this.restId = restId;
    }
    
    public String getMenuRate() {
        return menuRate;
    }
    
    public void setMenuRate(String menuRate) {
        this.menuRate = menuRate;
    }
    
    public String getCollectionTime() {
        return collectionTime;
    }
    
    public void setCollectionTime(String collectionTime) {
        this.collectionTime = collectionTime;
    }
    
    public String getQuantityLeft() {
        return quantityLeft;
    }
    
    public void setQuantityLeft(String quantityLeft) {
        this.quantityLeft = quantityLeft;
    }
    
    public String getFoodType() {
        return foodType;
    }
    
    public void setFoodType(String foodType) {
        this.foodType = foodType;
    }
    
    public String getImg1() {
        return img1;
    }
    
    public void setImg1(String img1) {
        this.img1 = img1;
    }
    
    public String getImg2() {
        return img2;
    }
    
    public void setImg2(String img2) {
        this.img2 = img2;
    }
    
    public String getImg3() {
        return img3;
    }
    
    public void setImg3(String img3) {
        this.img3 = img3;
    }
    
    public String getDate() {
        return date;
    }
    
    public void setDate(String date) {
        this.date = date;
    }
    
    public String getMenuName() {
        return menuName;
    }
    
    public void setMenuName(String menuName) {
        this.menuName = menuName;
    }
    
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }
    
    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }
    }
    

    【讨论】:

      【解决方案3】:

      您只创建了一次 Home 对象,因此它会覆盖前一个对象并只为您提供最后一个值。在 j 的 for 循环中创建它。您将获得所有值。

      for (int i = 0; i < jarray.length(); i++) {
      JSONObject object = jarray.getJSONObject(i);
      
      Username= object.getString("name");
      resID = object.getString("id");
      // jarray = jsono.getJSONArray("data");
      
      JSONArray jarray1 = object.getJSONArray("menu");
      for (int j = 0; j < jarray1.length(); j++) {
          Home home= new Home();
          JSONObject object1 = jarray1.getJSONObject(j);
          Proname = object1.getString("menu_name");
          Timing = object1.getString("collection_time");
          Price = object1.getString("menu_rate");
          Quantity = object1.getString("quantity_left");
          Proimage = object1.getString("img1");
          Availimg = object1.getString("img2");
          Fav = object1.getString("img3");
          menuID = object1.getString("id");
      
          Foodtype = object1.getString("food_type");
          if (Foodtype.equals("Veg")){
              home.setAvailimg(R.drawable.green);
          }else if (Foodtype.equals("Non-Veg")){
              home.setAvailimg(R.drawable.red);
          }
      
          home.setUsername(Username);
          home.setProname(Proname);
          home.setTiming(Timing);
          home.setPrice(Price);
          home.setQuantity(Quantity);
          home.setProimage(Proimage);
          homeList.add(home);
      }
      }
      

      【讨论】:

        猜你喜欢
        • 2019-05-28
        • 2019-08-02
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 2021-03-29
        • 1970-01-01
        相关资源
        最近更新 更多