2017-04-10 197 views
0

這是我的JSON:嵌套對象以JSON

Json

我需要訪問extra_services並獲得service_name

我知道我可以直接用做GSON但​​問題是,我需要使用getter和setter方法,因爲我使用的內部回收的適配器,我該怎麼辦呢?

這裏是我的適配器類,我需要得到的服務名稱

public class ExtraServicesAdapter extends RecyclerView.Adapter<ExtraServicesAdapter.ViewHolder> implements View.OnClickListener 
{ 
    private ArrayList<Business> businessList; 
    private Activity activity; 
    private int layoutMolde,idb; 

    public ExtraServicesAdapter(Activity activity, ArrayList<Business> list, int layout) 
    { 
     this.activity = activity; 
     this.businessList = list; 
     layoutMolde = layout; 
    } 

    @Override 
    public ExtraServicesAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
    { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_services_basic, parent, false); 
     return new ViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) 
    { 
     if(businessList.get(position).getExtra_services()==null) 
     { 
      holder.txtNameServiceBasic.setText("There's nothing to show"); 
     } 
     holder.txtNameServiceBasic.setText(businessList.get(position).getExtra_services()); 
    } 

    @Override 
    public int getItemCount() 
    { 
     return businessList.size(); 
    } 

    @Override 
    public void onClick(View v) 
    { 

    } 

    public class ViewHolder extends RecyclerView.ViewHolder 
    { 

     public TextView txtNameServiceBasic; 

     public ViewHolder(View itemView) 
     { 
      super(itemView); 
      txtNameServiceBasic = (TextView) itemView.findViewById(R.id.txtNameServiceBasic); 
     } 
    } 
} 

,這是我的課在哪裏getter和setter,我使用

public class Business { 

    private Integer id,rating; 
    private String name, description, cover_url_string, logo_url_string, icon_default,business_name,cover_default,extra_services; 
    private Boolean status; 

    public Business(){} 

    public Business(Integer id,Integer rating,String business_name, String name, String description, String logo_url_string, String cover_default, String icon_default,String cover_url_string,String extra_services) { 

     this.id = id; 
     this.name = name; 
     this.business_name=business_name; 
     this.description = description; 
     this.logo_url_string = logo_url_string; 
     this.cover_url_string = cover_url_string; 
     this.rating=rating; 
     this.icon_default=icon_default; 
     this.cover_default=cover_default; 
     this.extra_services=extra_services; 
    } 

    public Integer getId() { 
     return id; 
    } 

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

    public Integer getRating() { 
     return rating; 
    } 

    public String getBusiness_name() { 
     return business_name; 
    } 

    public void setBusiness_name(String business_name) { 
     this.business_name = business_name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getLogo_url_string() { 
     return logo_url_string; 
    } 

    public void setLogo_url_string(String logo_url_string) { 
     this.logo_url_string = logo_url_string; 
    } 

    public String getIcon_default() { 

     return icon_default; 
    } 

    public String getCover_default() { 
     return cover_default; 
    } 

    public String getCover_url_string() { 
     return cover_url_string; 
    } 

    public String getExtra_services() { 
     return extra_services; 
    } 

    public void setExtra_services() { 
     this.extra_services=extra_services; 
    } 
} 
+0

extra_services是一個數組,爲什麼你聲明它爲一個字符串? – njzk2

+0

您可以創建ExtraService類,並在經營業務類中聲明它作爲列表中進行getter和setter方法這兩個類 –

回答

1

您可以添加一個ExtraServices類包含一個列表ExtraService

ExtraService

public class ExtraService { 
private String Id; 
private String ServiceName; 

public String getId() { 
    return Id; 
} 

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

public String getServiceName() { 
    return ServiceName; 
} 

public void setServiceName(String ServiceName) { 
    this.ServiceName = ServiceName; 
} 

ExtraServices

public class ExtraServices { 
private List<ExtraService> extraServicesList; 

public List<ExtraService> getExtraServicesList() { 
    return extraServicesList; 
} 

public void setExtraServicesList(List<ExtraService> extraServicesList) { 
    this.extraServicesList = extraServicesList; 
}  

public void add(ExtraService extraService){ 
    if(extraServicesList == null){ 
     extraServicesList = new ArrayList<>(); 
    } 
    extraServicesList.add(extraService); 
} 

而在你Business類添加的ExtraServices

private ExtraServices extraServices; 

public ExtraServices getExtraServices() { 
    return extraServices; 
} 

public void setExtraServices (ExtraServices extraServices) { 
    this.extraServices = extraServices; 
} 

getter和setter方法後,你必須做二傳手過程,並在你的適配器,你應該做的像這樣:

holder.txtNameServiceBasic.setText(businessList.get(position).getExtraServices().getExtraServicesList().get(posistion).getServiceName()); 
+0

對不起,我已經採取了這麼長時間回覆,而且非常感謝你,這個工作對我來說:) –