从android中的json数组中的嵌套json对象获取数据

问题描述 投票:-1回答:1

我试图从json获取数据,该数据适用于第一部分,但不适用于嵌套的json对象。我想从json对象获取省和城市。

我试图从json获取数据,该数据适用于第一部分,但不适用于嵌套的json对象。我想从json对象获取省和城市。

In province object i want province string and in city i want city string

........................MY JSON.................
{
  "ads": [
    {
      "id": 8,
      "title": "Software Engineering",
      "description": "A book for software engineers",
      "price": 100,
      "user_id": 1,
      "province_id": 4,
      "city_id": 5,
      "subject_id": 1,
      "level_id": 3,
      "active": 1,
      "created_at": "2019-04-20 04:35:00",
      "updated_at": "2019-04-20 04:35:00",
      "province": {
        "id": 4,
        "province": "Blochistan",
        "created_at": null,
        "updated_at": null
      },
      "city": {
        "id": 5,
        "city": "Quetta",
        "province_id": 4,
        "created_at": null,
        "updated_at": null
      }
    }
  ]
}
public class AdsAdapter extends RecyclerView.Adapter<AdsAdapter.CustomViewHolder> {
    private List<Data> adsList;
    private Context context;


    public AdsAdapter(List<Data> dataList,Context context) {
        this.adsList=dataList;
        this.context=context;

    }

    @NonNull
    @Override
    public CustomViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View itemView = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.ads_list, viewGroup, false);

        return new CustomViewHolder(itemView,adsList,context);
    }

    @Override
    public void onBindViewHolder(@NonNull CustomViewHolder customViewHolder, int i) {
        Data data = adsList.get(i);
        customViewHolder.ad_title.setText(data.getTitle());
        customViewHolder.ad_price.setText(data.getPrice().toString());
//        customViewHolder.ad_city.setText(();
    }
    @Override
    public int getItemCount() {
        return adsList.size();
    }

    public class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        public TextView ad_title,ad_price,ad_province,ad_city;
        private List<Data> adsList;
        private Context context;
        public CustomViewHolder(@NonNull View itemView,List<Data> adsList,Context context) {
            super(itemView);
            this.adsList=adsList;
            this.context=context;
            itemView.setOnClickListener(this);
            ad_title = (TextView)itemView.findViewById(R.id.current_page);
            ad_price = itemView.findViewById(R.id.ad_price);
            ad_province = itemView.findViewById(R.id.province);
            ad_city = itemView.findViewById(R.id.city);
        }
        @Override
        public void onClick(View v) {
            int position=getAdapterPosition();
            Data data = this.adsList.get(position);
            Intent intent = new Intent(this.context,AdDetail.class);
            intent.putExtra("title",data.getTitle());
            intent.putExtra("discrip",data.getDescription());
            intent.putExtra("price",data.getPrice().toString());
            intent.putExtra("create",data.getCreatedAt().toString());
            this.context.startActivity(intent);
        }
    }
}

我的应用程序在访问省字符串时终止。

                            Model Class
public class Province {
    @SerializedName("id")
    @Expose
    private Integer id;
    @SerializedName("province")
    @Expose
    private String province;
    @SerializedName("created_at")
    @Expose
    private Object createdAt;
    @SerializedName("updated_at")
    @Expose
    private Object updatedAt;

    public Integer getId() {
        return id;
    }

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

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public Object getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Object createdAt) {
        this.createdAt = createdAt;
    }

    public Object getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(Object updatedAt) {
        this.updatedAt = updatedAt;
    }
}

Call call = api.getAds(parse_subject_id,parse_level_id);

    /**
     * Enqueue Callback will be call when get response...
     */
    call.enqueue(new Callback<SubjectList>() {
        @Override
        public void onResponse(Call<SubjectList> call, Response<SubjectList> response) {
            pDialog.dismiss();
            if (response.isSuccessful()) {
                /**
                 * Got Successfully
                 */
                adsList = response.body().getAds();
                recyclerView = (RecyclerView) findViewById(R.id.recycler_view_Ads);
                adsAdapter = new AdsAdapter(adsList,getApplicationContext());
                RecyclerView.LayoutManager eLayoutManager = new LinearLayoutManager(getApplicationContext());
                recyclerView.setLayoutManager(eLayoutManager);
                recyclerView.setItemAnimator(new DefaultItemAnimator());
                recyclerView.setAdapter(adsAdapter);
                /////////////////////////////////////
            }
        }
        @Override
        public void onFailure(Call<SubjectList> call, Throwable t) {
            pDialog.dismiss();
        }
    });
hare i am calling the adapter and pass parameters
java android
1个回答
0
投票

Generate POJO using this tool. you can directly insert your POJO class into your code

从city对象中你可以直接获得province_id

© www.soinside.com 2019 - 2024. All rights reserved.