package com.liyu.fakeweather.ui.weather.adapter; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import com.chad.library.adapter.base.BaseMultiItemQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.entity.MultiItemEntity; import com.liyu.fakeweather.R; import com.liyu.fakeweather.model.HeWeather5; import com.liyu.fakeweather.utils.SizeUtils; import com.liyu.fakeweather.utils.TimeUtils; import com.liyu.fakeweather.widgets.WeatherChartView; import com.liyu.fakeweather.widgets.WeatherDetailsView; import java.text.SimpleDateFormat; import java.util.List; import java.util.Locale; /** * Created by liyu on 2016/11/19. */ public class WeatherAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity, BaseViewHolder> { private SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()); private SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm", Locale.getDefault()); private boolean showWeatherChart = true; public WeatherAdapter(List<MultiItemEntity> data) { super(data); addItemType(HeWeather5.TYPE_NOW, R.layout.item_weather_container); addItemType(HeWeather5.TYPE_SUGGESTION, R.layout.item_suggestion_weather); addItemType(HeWeather5.TYPE_DAILYFORECAST, R.layout.item_weather_container); } @Override protected void convert(final BaseViewHolder holder, MultiItemEntity multiItemEntity) { switch (holder.getItemViewType()) { case HeWeather5.TYPE_NOW: HeWeather5 now = (HeWeather5) multiItemEntity; LinearLayout nowContainer = holder.getView(R.id.contentLayout); nowContainer.removeAllViews(); for (int i = 0; i < now.getHourly_forecast().size(); i++) { View view = View.inflate(mContext, R.layout.item_now_weather, null); TextView tvTime = (TextView) view.findViewById(R.id.tv_now_time); TextView tvTemp = (TextView) view.findViewById(R.id.tv_now_temp); TextView tvPop = (TextView) view.findViewById(R.id.tv_now_pop); TextView tvWind = (TextView) view.findViewById(R.id.tv_now_wind); tvTime.setText(TimeUtils.date2String(TimeUtils.string2Date(now.getHourly_forecast().get(i).getDate(), sdf1), sdf2)); tvTemp.setText(now.getHourly_forecast().get(i).getTmp() + "℃"); tvPop.setText(now.getHourly_forecast().get(i).getPop() + "%"); tvWind.setText(String.format("%s级", now.getHourly_forecast().get(i).getWind().getSc())); nowContainer.addView(view); } break; case HeWeather5.TYPE_SUGGESTION: HeWeather5.SuggestionBean suggestion = (HeWeather5.SuggestionBean) multiItemEntity; holder.setText(R.id.tv_suggestion_air, String.format("舒适指数 -- %s", suggestion.getComf().getBrf())); holder.setText(R.id.tv_suggestion_air_info, suggestion.getComf().getTxt()); holder.setText(R.id.tv_suggestion_out, String.format("运动指数 -- %s", suggestion.getSport().getBrf())); holder.setText(R.id.tv_suggestion_out_info, suggestion.getSport().getTxt()); holder.setText(R.id.tv_suggestion_car, String.format("洗车指数 -- %s", suggestion.getCw().getBrf())); holder.setText(R.id.tv_suggestion_car_info, suggestion.getCw().getTxt()); break; case HeWeather5.TYPE_DAILYFORECAST: HeWeather5 weather5 = (HeWeather5) ((HeWeather5) multiItemEntity).clone(); LinearLayout container = holder.getView(R.id.contentLayout); if (showWeatherChart) { container.setPadding(0, SizeUtils.dp2px(mContext, 16), 0, SizeUtils.dp2px(mContext, 16)); container.removeAllViews(); container.addView(getChartView(weather5)); } else { container.removeAllViews(); container.addView(getDetailsView(weather5)); } container.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showWeatherChart = !showWeatherChart; notifyItemChanged(holder.getAdapterPosition()); } }); break; } } private WeatherChartView getChartView(HeWeather5 weather5) { WeatherChartView chartView = new WeatherChartView(mContext); chartView.setWeather5(weather5); return chartView; } private WeatherDetailsView getDetailsView(HeWeather5 weather5) { WeatherDetailsView detailsView = new WeatherDetailsView(mContext); detailsView.setWeather5(weather5); return detailsView; } }