Je suis totalement débutant dans Retrofit.J'essaie de faire l'objet de la réponse suivante en utilisant les annotations de rénovation.Comment accéder à ce sous-tableau de réponse dans Retrofit dans ce code?
Réponse:
{"status":"1",
"data":[{"title":"hb","rate":"12",
"pic":[{"file_name":"x"},{"file_name":"y"}]}
{"title":"hk","rate":"15",
"pic":[{"file_name":"x"},{"file_name":"y"}]}
{"title":"hc","rate":"18",
"pic":[{"file_name":"x"},{"file_name":"y"}]}
]
}
Pour que j'écrit le code pour l'afficher en mode recycleur. En écrivant le code suivant je peux obtenir les éléments de l'objet de données mais je ne peux pas accéder aux éléments de l'objet pic de la réponse. Que dois-je modifier dans ce code pour accéder aux éléments de l'objet pic?
Book_Hotel.java:
public class Book_Hotel extends Fragment {
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private Recycler_Adapter adapter;
private Api_Contact con;
private Api_Interface apiInterface;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_book__hotel, container, false);
getActivity().setTitle("Room List");
recyclerView = (RecyclerView) view.findViewById(R.id.recycler);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
apiInterface = Api_Client.getApiClient().create(Api_Interface.class);
Call<Api_Contact> call = apiInterface.getContacts();
call.enqueue(new Callback<Api_Contact>() {
@Override
public void onResponse(Call<Api_Contact> call, Response<Api_Contact> response) {
con = response.body();
Log.e("data", con.getData().toString());
adapter = new Recycler_Adapter(getActivity(), con.getData());
recyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call<Api_Contact> call, Throwable t) {
Log.e("fail", t.toString());
if (t.toString().contains(" Unable to resolve")) {
Toast.makeText(getActivity(), "Internet connect prob", Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
}
Api_Client.java:
public class Api_Client {
public static final String BASE_URL="xxxxxxxxxxxxxxxxxxxxxxxxxxx";
public static Retrofit retrofit = null;
public static Retrofit getApiClient(){
if(retrofit==null){
retrofit=new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
Log.e("in client",retrofit.toString());
}
return retrofit;
}
}
Api_Contact.java:
public class Api_Contact {
@SerializedName("status")
private String Status;
@SerializedName("data")
private List<data> Data;
public String getStatus() {
return Status;
}
public List<data> getData() {
Log.e("in get data of contact", Data.toString());
return Data;
}
}
Api_Interface.java:
public interface Api_Interface{
@GET("xxxxxxx")
Call<Api_Contact> getContacts();
}
Recycler_Adapter.java:
public class Recycler_Adapter extends RecyclerView.Adapter<Recycler_Adapter.MyViewHolder> {
private List<data> data;
Context context;
public Recycler_Adapter(Context context, List<data> contacts) {
this.context = context;
this.data = contacts;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.roomlist_row, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(Recycler_Adapter.MyViewHolder holder, int position) {
holder.title.setText(data.get(position).getTitle());
holder.price.setText(data.get(position).getRate());
}
@Override
public int getItemCount() {
return data.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView title, price;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.awesom);
price = (TextView) itemView.findViewById(R.id.rate);
}
}
}
S'il vous plaît aidez-moi à résoudre this.That sera appreciated.Thank vous.
Pouvez-vous poster le code de votre ' classe de données? – gyoda
Déjà publié. – user8209191
Je ne vois pas une définition de classe qui ressemble à: 'public class data { ... }' – gyoda