У меня вызов API с погодой. В ответ я получаю WeatherResponse, который содержит списки массивов суточной температуры, почасовой и минутной температуры. С другой стороны, у меня есть RecyclerView, который показывает весь день из дневного массива. Когда я нажимаю на RecyclerView в какой-то день, мне нужно развернуть выбранный элемент и показать все часы того же дня. Я создал представление, содержащее TextView (день из дня) и RecyclerView (часы), которое будет содержать часы дня, в который щелкнули. В моем адаптере Days rv я делаю интерфейс, который прослушивает щелчок по дню и внедряю его в основное действие. Интерфейс передает позицию дня клика и списка дневных массивов. Я создаю еще один адаптер для Hourly RV, который находится внутри daily RV. Итак, как я могу создать список часов из выбранного дня? *
public class Daily extends BaseObservable implements Parcelable {
@SerializedName("dt")
@Expose
private int dt;
@SerializedName("sunrise")
@Expose
private int sunrise;
@SerializedName("sunset")
@Expose
private int sunset;
@SerializedName("temp")
@Expose
private Temp temp;
@SerializedName("feels_like")
@Expose
private FeelsLike feelsLike;
@SerializedName("pressure")
@Expose
private int pressure;
@SerializedName("humidity")
@Expose
private int humidity;
@SerializedName("dew_point")
@Expose
private double dewPoint;
@SerializedName("wind_speed")
@Expose
private double windSpeed;
@SerializedName("wind_deg")
@Expose
private int windDeg;
@SerializedName("weather")
@Expose
private List<Weather> weather = null;
@SerializedName("clouds")
@Expose
private int clouds;
@SerializedName("rain")
@Expose
private double rain;
@SerializedName("uvi")
@Expose
private double uvi;
}
Функция привязки дневного адаптера:
@Override
public void onBindViewHolder(@NonNull DayViewHolder holder, int position) {
Daily daily = dailies.get(position);
holder.dayItemViewBinding.setDaily(daily);
holder.dayItemViewBinding.getRoot().setTag(position);
holder.dayItemViewBinding.getRoot().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag();
if (callback != null){
callback.onDayItemClick(position, daily);
}
}
});