Не получается вывести в RecyclerView интерфейс Collection
Коллеги, добрый день! Делаю парсинг JSON через Retrofit2 и вывод данных в RecyclerView. В методе непосредственно получения данных onResponce пытаюсь скормить адаптеру объект данных путем преобразования Collection в List (как и просит сам адаптер), но без проверки ловлю classcastexception. Дебаггер показывает, что всё распарсивается как надо, но вывести в адаптер никак не выходит. Код в MainActivity:
NetworkService.getInstance()
.getAll()
.getAll()
.enqueue(new Callback<CurrencyResponce>() {
@Override
public void onResponse(Call<CurrencyResponce> call, Response<CurrencyResponce> response) {
if (response.isSuccessful()) {
Collection<Valutes> valutes = response.body().getValute().values();
if (valutes.equals(Valutes.class)) {
adapter.setResponces((List<Valutes>) valutes);
} else
Toast.makeText(MainActivity.this, "Error!", Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<CurrencyResponce> call, Throwable t) {
Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Код в классе адаптера:
public class PostAdapter extends RecyclerView.Adapter<PostAdapter.PostViewHolder> {
List<Valutes> responces = new ArrayList<Valutes>() {
};
public List<Valutes> getResponces() {
return responces;
}
public void setResponces(List<Valutes> responces) {
this.responces = responces;
notifyDataSetChanged();
}
@NonNull
@Override
public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.posts_item, parent, false);
return new PostViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull PostViewHolder holder, int position) {
holder.bind(responces.get(position));
}
@Override
public int getItemCount() {
return responces.size();
}
static class PostViewHolder extends RecyclerView.ViewHolder{
TextView textViewId;
TextView textViewNumCode;
TextView textViewCharCode;
TextView textViewNominal;
TextView textViewName;
TextView textViewValue;
TextView textViewPrevious;
public PostViewHolder(@NonNull View itemView) {
super(itemView);
textViewId = itemView.findViewById(R.id.text_view_id);
textViewNumCode = itemView.findViewById(R.id.text_view_num_code);
textViewCharCode = itemView.findViewById(R.id.text_view_char_code);
textViewNominal = itemView.findViewById(R.id.text_view_nominal);
textViewName = itemView.findViewById(R.id.text_view_name);
textViewValue = itemView.findViewById(R.id.text_view_value);
textViewPrevious = itemView.findViewById(R.id.tex_view_previous);
}
void bind(Valutes valutes) {
textViewId.setText(valutes.getID());
textViewNumCode.setText(valutes.getNumCode());
textViewCharCode.setText(valutes.getCharCode());
textViewNominal.setText("" + valutes.getNominal());
textViewName.setText(valutes.getName());
textViewValue.setText("" + valutes.getValue());
textViewPrevious.setText("" + valutes.getPrevious());
}
}
}
Код в первом классе CorrencyResponce:
public class CurrencyResponce {
@SerializedName("Date")
@Expose
private String Date;
@SerializedName("PreviousDate")
@Expose
private String PreviousDate;
@SerializedName("PreviousURL")
@Expose
private String PreviousURL;
@SerializedName("Timestamp")
@Expose
private String Timestamp;
@SerializedName("Valute")
@Expose
private Map<String, Valutes> Valute;
public String getDate() {
return Date;
}
public void setDate(String date) {
Date = date;
}
public String getPreviousDate() {
return PreviousDate;
}
public void setPreviousDate(String previousDate) {
PreviousDate = previousDate;
}
public String getPreviousURL() {
return PreviousURL;
}
public void setPreviousURL(String previousURL) {
PreviousURL = previousURL;
}
public String getTimestamp() {
return Timestamp;
}
public void setTimestamp(String timestamp) {
Timestamp = timestamp;
}
public Map<String, Valutes> getValute() {
return Valute;
}
public void setValute(Map<String, Valutes> valute) {
Valute = valute;
}
}
Код во втором классе, который вставляю в мапу Valute в CurrencyResponce:
public class Valutes {
@SerializedName("ID")
@Expose
private String ID;
@SerializedName("NumCode")
@Expose
private String NumCode;
@SerializedName("CharCode")
@Expose
private String CharCode;
@SerializedName("Nominal")
@Expose
private float Nominal;
@SerializedName("Name")
@Expose
private String Name;
@SerializedName("Value")
@Expose
private float Value;
@SerializedName("Previous")
@Expose
private float Previous;
public String getID() {
return ID;
}
public String getNumCode() {
return NumCode;
}
public String getCharCode() {
return CharCode;
}
public float getNominal() {
return Nominal;
}
public String getName() {
return Name;
}
public float getValue() {
return Value;
}
public float getPrevious() {
return Previous;
}
// Setter Methods
public void setID(String ID) {
this.ID = ID;
}
public void setNumCode(String NumCode) {
this.NumCode = NumCode;
}
public void setCharCode(String CharCode) {
this.CharCode = CharCode;
}
public void setNominal(float Nominal) {
this.Nominal = Nominal;
}
public void setName(String Name) {
this.Name = Name;
}
public void setValue(float Value) {
this.Value = Value;
}
public void setPrevious(float Previous) {
this.Previous = Previous;
}
}