如何使用改装从对象读取数组并填充recyclerview

gjmwrych  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(268)

我试图读取对象(json)中的数组。我以前使用过改装,但我无法到达阵列。以下是模型:
negocio级

public class Negocio {

    @SerializedName("data")
    @Expose
    private List<Datum> data = null;

    public List<Datum> getData() {
        return data;
    }

    public void setData(List<Datum> data) {
        this.data = data;
    }

}

imagennegocio.class

public class ImagenNegocio {

    @SerializedName("idImagenNegocio")
    @Expose
    private Integer idImagenNegocio;
    @SerializedName("url")
    @Expose
    private String url;
    @SerializedName("flgPortada")
    @Expose
    private Boolean flgPortada;
    @SerializedName("flgLogo")
    @Expose
    private Boolean flgLogo;
    @SerializedName("idNegocio")
    @Expose
    private Integer idNegocio;

    public Integer getIdImagenNegocio() {
        return idImagenNegocio;
    }

    public void setIdImagenNegocio(Integer idImagenNegocio) {
        this.idImagenNegocio = idImagenNegocio;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Boolean getFlgPortada() {
        return flgPortada;
    }

    public void setFlgPortada(Boolean flgPortada) {
        this.flgPortada = flgPortada;
    }

    public Boolean getFlgLogo() {
        return flgLogo;
    }

    public void setFlgLogo(Boolean flgLogo) {
        this.flgLogo = flgLogo;
    }

    public Integer getIdNegocio() {
        return idNegocio;
    }

    public void setIdNegocio(Integer idNegocio) {
        this.idNegocio = idNegocio;
    }

}

基准类

public class Datum {

    @SerializedName("id")
    @Expose
    private Integer id;
    @SerializedName("nombre")
    @Expose
    private String nombre;
    @SerializedName("ruc")
    @Expose
    private String ruc;
    @SerializedName("razonSocial")
    @Expose
    private String razonSocial;
    @SerializedName("descripcion")
    @Expose
    private String descripcion;
    @SerializedName("tiempoEntregaMinimo")
    @Expose
    private Integer tiempoEntregaMinimo;
    @SerializedName("tiempoEntregaMaximo")
    @Expose
    private Integer tiempoEntregaMaximo;
    @SerializedName("flgDeliveryPropio")
    @Expose
    private Boolean flgDeliveryPropio;
    @SerializedName("flgAplicaCostoEnvio")
    @Expose
    private Boolean flgAplicaCostoEnvio;
    @SerializedName("flgPagoOnline")
    @Expose
    private Boolean flgPagoOnline;
    @SerializedName("flgPagoEfectivo")
    @Expose
    private Boolean flgPagoEfectivo;
    @SerializedName("flgRecomendado")
    @Expose
    private Boolean flgRecomendado;
    @SerializedName("flgDisponible")
    @Expose
    private Boolean flgDisponible;
    @SerializedName("nroCuenta")
    @Expose
    private String nroCuenta;
    @SerializedName("idRubro")
    @Expose
    private Integer idRubro;
    @SerializedName("idBanco")
    @Expose
    private Integer idBanco;
    @SerializedName("idConfiguracionPedido")
    @Expose
    private Integer idConfiguracionPedido;
    @SerializedName("idUsuario")
    @Expose
    private Integer idUsuario;
    @SerializedName("imagenNegocios")
    @Expose
    private List<ImagenNegocio> imagenNegocios = null;

    public Integer getId() {
        return id;
    }

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

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getRuc() {
        return ruc;
    }

    public void setRuc(String ruc) {
        this.ruc = ruc;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Integer getTiempoEntregaMinimo() {
        return tiempoEntregaMinimo;
    }

    public void setTiempoEntregaMinimo(Integer tiempoEntregaMinimo) {
        this.tiempoEntregaMinimo = tiempoEntregaMinimo;
    }

    public Integer getTiempoEntregaMaximo() {
        return tiempoEntregaMaximo;
    }

    public void setTiempoEntregaMaximo(Integer tiempoEntregaMaximo) {
        this.tiempoEntregaMaximo = tiempoEntregaMaximo;
    }

    public Boolean getFlgDeliveryPropio() {
        return flgDeliveryPropio;
    }

    public void setFlgDeliveryPropio(Boolean flgDeliveryPropio) {
        this.flgDeliveryPropio = flgDeliveryPropio;
    }

    public Boolean getFlgAplicaCostoEnvio() {
        return flgAplicaCostoEnvio;
    }

    public void setFlgAplicaCostoEnvio(Boolean flgAplicaCostoEnvio) {
        this.flgAplicaCostoEnvio = flgAplicaCostoEnvio;
    }

    public Boolean getFlgPagoOnline() {
        return flgPagoOnline;
    }

    public void setFlgPagoOnline(Boolean flgPagoOnline) {
        this.flgPagoOnline = flgPagoOnline;
    }

    public Boolean getFlgPagoEfectivo() {
        return flgPagoEfectivo;
    }

    public void setFlgPagoEfectivo(Boolean flgPagoEfectivo) {
        this.flgPagoEfectivo = flgPagoEfectivo;
    }

    public Boolean getFlgRecomendado() {
        return flgRecomendado;
    }

    public void setFlgRecomendado(Boolean flgRecomendado) {
        this.flgRecomendado = flgRecomendado;
    }

    public Boolean getFlgDisponible() {
        return flgDisponible;
    }

    public void setFlgDisponible(Boolean flgDisponible) {
        this.flgDisponible = flgDisponible;
    }

    public String getNroCuenta() {
        return nroCuenta;
    }

    public void setNroCuenta(String nroCuenta) {
        this.nroCuenta = nroCuenta;
    }

    public Integer getIdRubro() {
        return idRubro;
    }

    public void setIdRubro(Integer idRubro) {
        this.idRubro = idRubro;
    }

    public Integer getIdBanco() {
        return idBanco;
    }

    public void setIdBanco(Integer idBanco) {
        this.idBanco = idBanco;
    }

    public Integer getIdConfiguracionPedido() {
        return idConfiguracionPedido;
    }

    public void setIdConfiguracionPedido(Integer idConfiguracionPedido) {
        this.idConfiguracionPedido = idConfiguracionPedido;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public List<ImagenNegocio> getImagenNegocios() {
        return imagenNegocios;
    }

    public void setImagenNegocios(List<ImagenNegocio> imagenNegocios) {
        this.imagenNegocios = imagenNegocios;
    }

}

这是我从url得到的信息:

{
  "data": [
    {
      "id": 1,
      "nombre": "Huellitas",
      "ruc": "20123456789",
      "razonSocial": "Huellitas SAC",
      "descripcion": "Tienda de productos para mascotas",
      "tiempoEntregaMinimo": 15,
      "tiempoEntregaMaximo": 30,
      "flgDeliveryPropio": false,
      "flgAplicaCostoEnvio": true,
      "flgPagoOnline": true,
      "flgPagoEfectivo": true,
      "flgRecomendado": false,
      "flgDisponible": true,
      "nroCuenta": "112548975",
      "idRubro": 1,
      "idBanco": 1,
      "idConfiguracionPedido": 1,
      "idUsuario": 2,
      "imagenNegocios": [
        {
          "idImagenNegocio": 6,
          "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQyktAFVOzfKb29j7EUrRml2ZzMjpVbKQFJmgY3h7tK35wOWbQBUc6R1UVW2axs00puEg0&usqp=CAU",
          "flgPortada": false,
          "flgLogo": true,
          "idNegocio": 1
        },
        {
          "idImagenNegocio": 7,
          "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSC_3Dy_NlxlPDwC5LkFyLvvM1oxccl1Vvl9Q&usqp=CAU",
          "flgPortada": true,
          "flgLogo": false,
          "idNegocio": 1
        }
      ]
    },
    {
      "id": 2,
      "nombre": "Ikiitu",
      "ruc": "20787945613",
      "razonSocial": "Ikiitu EIRL",
      "descripcion": "Restaurante amazonico e internacional",
      "tiempoEntregaMinimo": 20,
      "tiempoEntregaMaximo": 60,
      "flgDeliveryPropio": true,
      "flgAplicaCostoEnvio": true,
      "flgPagoOnline": true,
      "flgPagoEfectivo": false,
      "flgRecomendado": false,
      "flgDisponible": true,
      "nroCuenta": "117894565",
      "idRubro": 1,
      "idBanco": 1,
      "idConfiguracionPedido": 1,
      "idUsuario": 3,
      "imagenNegocios": [
        {
          "idImagenNegocio": 3,
          "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQEMVyZ0EEg6v80LnnuZJwaL7a239EOpnfH6lKOF5TFQONEStJVk5-L9X2xME9OHjGeOts&usqp=CAU",
          "flgPortada": false,
          "flgLogo": true,
          "idNegocio": 2
        },
        {
          "idImagenNegocio": 4,
          "url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQN5BnM6QwIqX3ruP1svQjyjoBsWPEFMxWlqA&usqp=CAU",
          "flgPortada": true,
          "flgLogo": false,
          "idNegocio": 2
        }
      ]
    }
  ]
 }

这是我的userservice.java

public interface UserService {

    @GET("Negocio/")
    Call<List<Datum>> Negocio();
}

我要做的是将其填充到一个recyclerview中。我已经创建了适配器
listanegocioadapter.java

public class ListaNegocioAdapter extends RecyclerView.Adapter<ListaNegocioAdapter.ViewHolder> {

    private Context mcontext;
    private List<Datum> mNegocioList;
    private OnItemClickListener mListener;

    public interface OnItemClickListener{
        void onItemClick(int position);
    }

    public void setOnItemClickListener (OnItemClickListener listener){
        mListener = listener;
    }

    public ListaNegocioAdapter (Context mcontext, List<Datum> mNegocioList){
        this.mcontext = mcontext;
        this.mNegocioList = mNegocioList;
    }

    @NonNull
    @Override
    public ListaNegocioAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(mcontext).inflate(R.layout.grd_item_list_negocio,viewGroup,false);
        return new ListaNegocioAdapter.ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ListaNegocioAdapter.ViewHolder viewHolder, int position) {
        Datum currentItem = mNegocioList.get(position);
        viewHolder.nombreNegocio.setText(currentItem.getNombre());
        //Picasso.get().load(currentItem.getImagenNegocios()).into(viewHolder.logoNegocio);
    }

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

    public void adicinarLista (List<Datum> listaNegocios){
        this.mNegocioList = listaNegocios;
        notifyDataSetChanged();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        public TextView nombreNegocio;
        public ImageView logoNegocio;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            nombreNegocio = itemView.findViewById(R.id.txt_nombreNegocio);
            logoNegocio = itemView.findViewById(R.id.img_negocioLogo);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (mListener!=null){
                        int position = getAdapterPosition();
                        if (position != RecyclerView.NO_POSITION){
                            mListener.onItemClick(position);
                        }
                    }
                }
            });
        }
    }
}

但是我无法进入imagennegocio来检索图像url。谁能帮帮我吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题