使用改造和片段的RecyclerView(没有连接适配器;跳过布局)

时间:2017-06-05 16:36:14

标签: android android-studio android-fragments android-recyclerview retrofit2

您好我正在尝试显示来自改造onResponse的列表,我在片段中使用了recyclerview。列表显示厨师,但我从RecyclerView

收到错误

Conexion Class

public class Conexion {


    public static String BASE_URL = "http://10.30.0.133:8091/Service1.asmx/";
    private static Retrofit retrofit = null;

    public static Retrofit getClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }


}

EndPoint接口

public interface EndPointsInterface {


    @GET("chef/{idUser}")
    Call<ChefResponse> GetChefsCercanos(@Path("idUser") Integer id_usuario);


}

实体Usuario

public class Usuario  {


    @SerializedName("id_usuario")
    private Integer id_usuario;
    @SerializedName("NombreUsuario")
    private String NombreUsuario;
    @SerializedName("ApellidoUsuario")
    private String ApellidoUsuario;
    @SerializedName("TelefonoUsuario")
    private String TelefonoUsuario;
    @SerializedName("Email")
    private String Email;
    @SerializedName("Contraseña")
    private String Contraseña;
    @SerializedName("pos_x")
    private Double pos_x;
    @SerializedName("pos_y")
    private Double pos_y;





    public Usuario(){}

    public Usuario(Integer id_usuario,String NombreUsuario,String ApellidoUsuario,String TelefonoUsuario,String Email,String Contraseña,Double pos_x,Double pos_y){
        this.id_usuario=id_usuario;
        this.NombreUsuario=NombreUsuario;
        this.ApellidoUsuario=ApellidoUsuario;
        this.TelefonoUsuario=TelefonoUsuario;
        this.Contraseña=Contraseña;
        this.pos_x=pos_x;
        this.pos_y=pos_y;
    }



    public Integer getId_usuario() {
        return id_usuario;
    }

    public void setId_usuario(Integer id_usuario) {
        this.id_usuario = id_usuario;
    }

    public String getNombreUsuario() {
        return NombreUsuario;
    }

    public void setNombreUsuario(String nombreUsuario) {
        NombreUsuario = nombreUsuario;
    }

    public String getApellidoUsuario() {
        return ApellidoUsuario;
    }

    public void setApellidoUsuario(String apellidoUsuario) {
        ApellidoUsuario = apellidoUsuario;
    }

    public String getTelefonoUsuario() {
        return TelefonoUsuario;
    }

    public void setTelefonoUsuario(String telefonoUsuario) {
        TelefonoUsuario = telefonoUsuario;
    }

    public String getEmail() {
        return Email;
    }

    public void setEmail(String email) {
        Email = email;
    }

    public String getContraseña() {
        return Contraseña;
    }

    public void setContraseña(String contraseña) {
        Contraseña = contraseña;
    }

    public Double getPos_x() {
        return pos_x;
    }

    public void setPos_x(Double pos_x) {
        this.pos_x = pos_x;
    }

    public Double getPos_y() {
        return pos_y;
    }

    public void setPos_y(Double pos_y) {
        this.pos_y = pos_y;
    }
}

实体厨师

public class Chef extends Usuario{

    @SerializedName("id_chef")
    private Integer id_chef;
    @SerializedName("TipoServicio")
    private String TipoServicio;
    @SerializedName("Rating")
    private Double Rating;
    @SerializedName("EstadoChef")
    private Boolean EstadoChef;


    public Chef(){}

    public Chef(Integer id_usuario,String NombreUsuario,String ApellidoUsuario,String TelefonoUsuario,String Email,String Contraseña,Double pos_x,Double pos_y,Integer id_chef,String TipoServicio,Double Rating,Boolean EstadoChef){
        super(id_usuario,NombreUsuario,ApellidoUsuario,TelefonoUsuario,Email,Contraseña,pos_x,pos_y);
        this.id_chef=id_chef;
        this.TipoServicio=TipoServicio;
        this.Rating=Rating;
        this.EstadoChef=EstadoChef;
    }



    public Integer getId_chef() {
        return id_chef;
    }

    public void setId_chef(Integer id_chef) {
        this.id_chef = id_chef;
    }

    public String getTipoServicio() {
        return TipoServicio;
    }

    public void setTipoServicio(String tipoServicio) {
        TipoServicio = tipoServicio;
    }

    public Double getRating() {
        return Rating;
    }

    public void setRating(Double rating) {
        Rating = rating;
    }

    public Boolean getEstadoChef() {
        return EstadoChef;
    }

    public void setEstadoChef(Boolean estadoChef) {
        EstadoChef = estadoChef;
    }
}

厨师回复

public class ChefResponse {


    @SerializedName("results")
    private Chef[] results;


    public Chef[] getresults(){
        return results;
    }
}

RecyclerView适配器

public class ListaChefsCercanos extends RecyclerView.Adapter<ListaChefsCercanos.ListaChefsCercanosViewHolder> {


    private List<Chef> chefs;
    private List<Usuario> usuarios;
    private int rowLayout;
    private Context context;


    @Override
    public ListaChefsCercanosViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
        return new ListaChefsCercanosViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ListaChefsCercanosViewHolder holder, int position) {
        holder.nombreschefscerca.setText(chefs.get(position).getNombreUsuario());
        holder.ratingchef.setText(chefs.get(position).getRating().toString());
    }

    @Override
    public int getItemCount() {

        return chefs.size();
    }

    public static class ListaChefsCercanosViewHolder extends RecyclerView.ViewHolder{
        LinearLayout chefslayout;
        TextView nombreschefscerca;
        TextView ratingchef;

        public ListaChefsCercanosViewHolder(View v){
            super(v);
            chefslayout=(LinearLayout) v.findViewById(R.id.cheflayoutcerca);
            nombreschefscerca=(TextView) v.findViewById(R.id.tv_NombreChefCercano);
            ratingchef=(TextView) v.findViewById(R.id.tv_RatingChefCercano);
        }
    }

    public ListaChefsCercanos(ArrayList <Chef> chefs){
        this.chefs=chefs;
        //this.rowLayout = rowLayout;
        //this.context = context;
    }



}

和片段

public class RecomendadosFragment extends Fragment {

    private RatingBar ratingBar;

    //ListAdapter adapter;
    ArrayList<Chef> listachef;
    ListView lvLista;
    String tag_json_array="jarray req";
    RecyclerView recyclerviewChefsCarnos;
    ListaChefsCercanos mListaChefsCercanos;

    private ArrayList<Chef> data;
    private ListaChefsCercanos adapter;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View x =  inflater.inflate(R.layout.recomendados,null);


        //ratingBar = (RatingBar) x.findViewById(R.id.rb_RatingChefCercano);
        recyclerviewChefsCarnos=(RecyclerView) x.findViewById(R.id.rv_chefsCernaos);
        recyclerviewChefsCarnos.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));


        EndPointsInterface apiService = Conexion.getClient().create(EndPointsInterface.class);


        Call<ChefResponse> call = apiService.GetChefsCercanos(5);
        call.enqueue(new Callback<ChefResponse>() {
            @Override
            public void onResponse(Call<ChefResponse> call, Response<ChefResponse> response) {
                int statusCode = response.code();

                  if (response.isSuccessful()) {

                ChefResponse jsonResponse = response.body();

                if(jsonResponse != null) {

                    data = new ArrayList<>(Arrays.asList(jsonResponse.getresults()));
                    adapter= new ListaChefsCercanos(data);
                    recyclerviewChefsCarnos.setAdapter(adapter);

                }

            } else {
                // Do whatever you want if API is unsuccessful.
            }


               // List<Chef> chefs= response.body().getResults();
               // recyclerviewChefsCarnos.setAdapter(new ListaChefsCercanos( chefs,R.layout.itemchefscercanos,getActivity().getApplicationContext()));
            }

            @Override
            public void onFailure(Call<ChefResponse> call, Throwable t) {
                Log.d("Error",t.getMessage());

            }


        });

        return x;
    }

这是我在Im debuging时发现的错误

 E/RecyclerView: No adapter attached; skipping layout

1 个答案:

答案 0 :(得分:3)

更新:在OncreateView()

中为RecyclerView使用空适配器
recyclerView.setAdapter(new YourAdapter(getCurrentActivity()));