J'ai commencé à travailler avec Retrofit. Dans ma demande j'ai un RecyclerView avec deux ViewHolder de, où essayant d'obtenir des données de mes modèles, dans les journaux à venir Type:Récupérer des données dans mon RecyclerView
@Override
public void onResponse(Call<DropDown> call, Response<DropDown> response) {
DropDown jsonResponse = response.body();
Log.d("type",jsonResponse.getForm().getmGroupss().get(1).getmControls().get(2).getTitle()+"");
adapter = new DataAdapter(response.body());
recyclerView.setAdapter(adapter);
}
Comment puis-je afficher ce de type dans mon RecyclerView, s'il y aura quelques types? Maintenant je le message suivant:
09-13 09: 20: 40,958 2798-2798/com.random.secondproject E/RecyclerView: Aucun adaptateur attaché; sauter la mise en page
DataAdapter:
public class DataAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final String TYPE_TEXTVIEW = "0";
public static final String TYPE_EDITVIEW = "1";
private DropDown mList;
public DataAdapter(DropDown list) {
this.mList = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
switch (viewType) {
case 0:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.text_numeric, parent, false);
return new NumericViewHolder(view);
case 1:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.drop_down_options, parent, false);
return new DropDownViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
DropDown object = mList.get(position);
if (object != null) {
switch (object.getTitle()){
case TYPE_TEXTVIEW:
((NumericViewHolder) holder).title.setText(String.valueOf(object.getTitle()));
break;
case TYPE_EDITVIEW:
((DropDownViewHolder) holder).title_options.setText(String.valueOf(object.getTitle()));
break;
}
}
}
@Override
public int getItemCount() {
if (mList == null)
return 0;
return mList.size();
}
@Override
public int getItemViewType(int position) {
DropDown object = mList.get(position);
if (object.getTitle().equals("drop_down_options"))
return 0;
else return 1;
}
public class NumericViewHolder extends RecyclerView.ViewHolder {
private TextView title;
public NumericViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title);
}
}
public class DropDownViewHolder extends RecyclerView.ViewHolder {
private EditText title_options;
public DropDownViewHolder(View itemView) {
super(itemView);
title_options = (EditText) itemView.findViewById(R.id.title_options);
}
Comme vous pouvez le voir, je vais prendre deux types (TextView et EditText) donc je vais écrire quelques façons de modèle (tableau je pense) . Par exemple, comme je l'ai écrit dans Log.d.
Je suppose que vous obtenez ce message avant que ** onResponse ** soit appelé, n'est-ce pas? –
Oui, je peux montrer tout mon code dans MainActivity si c'est nécessaire. Vous voulez comprendre le problème. – Morozov
En supposant que log.d imprime le type et le titre de la valeur. S'il vous plaît pouvez-vous ajouter le code DataAdapter en éditant la question –