package com.silencedut.knowweather.weather.ui.adapter;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.silencedut.knowweather.R;
import com.silencedut.knowweather.common.adapter.BaseAdapterData;
import com.silencedut.knowweather.common.adapter.BaseRecyclerAdapter;
import com.silencedut.knowweather.common.adapter.BaseViewHolder;
import com.silencedut.knowweather.utils.Check;
import com.silencedut.knowweather.weather.entity.WeatherEntity;
import com.silencedut.knowweather.weather.callbacks.WeatherCallBack;
import com.silencedut.router.Router;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
/**
* Created by SilenceDut on 16/10/25.
*/
public class LifeIndexesHolder extends BaseViewHolder<LifeIndexData> implements WeatherCallBack.LifeAdvice {
private static final int[] LIFE_INDEXES_ICONIDS = { R.mipmap.sun_cure,R.mipmap.clothing, R.mipmap.health,R.mipmap.wash_car, R.mipmap.protection,R.mipmap.sport_mode, R.mipmap.shopping, R.mipmap.night_light};
@BindView(R.id.lifeRecyclerView)
RecyclerView mRecyclerView;
@BindView(R.id.life_advice)
TextView mLifeAdvice;
private BaseRecyclerAdapter mLifeAdapter;
public LifeIndexesHolder(View itemView, BaseRecyclerAdapter baseRecyclerAdapter) {
super(itemView, baseRecyclerAdapter);
Router.instance().register(this);
}
@Override
public void initViews() {
mRecyclerView.setLayoutManager(new GridLayoutManager(getContext(), 4));
mLifeAdapter = new BaseRecyclerAdapter(getContext());
mRecyclerView.setAdapter(mLifeAdapter);
mLifeAdapter.registerHolder(LifeItemHolder.class, R.layout.item_life_index);
}
@Override
public void updateItem(LifeIndexData lifeIndexData, int position) {
List<WeatherEntity.LifeIndexEntity> lifeIndexesData = lifeIndexData.lifeIndexesData;
if (Check.isNull(lifeIndexData)) {
return;
}
List<LifeItemData> lifeItems = new ArrayList<>();
for (int index = 0; index < lifeIndexesData.size(); index++) {
lifeItems.add(new LifeItemData(lifeIndexesData.get(index), LIFE_INDEXES_ICONIDS[index]));
}
mLifeAdapter.setData(lifeItems);
}
@Override
public int getContentViewId() {
return R.layout.item_life;
}
@OnClick(R.id.life_advice)
public void onClick() {
Router.instance().getReceiver(WeatherCallBack.LifeAdvice.class).lifeAdvice(getContext().getString(R.string.lifeIndexes), getContext().getString(R.string.lifeIndexes));
mLifeAdvice.setVisibility(View.GONE);
}
@Override
public void lifeAdvice(String index, String advice) {
mLifeAdvice.setText(advice);
mLifeAdvice.setVisibility(View.VISIBLE);
}
private static final class LifeItemData implements BaseAdapterData {
WeatherEntity.LifeIndexEntity weatherLifeIndexData;
int lifeIndexIconId = R.mipmap.sport_mode;
LifeItemData(WeatherEntity.LifeIndexEntity weatherLifeIndexData, int lifeIndexIconId) {
this.weatherLifeIndexData = weatherLifeIndexData;
this.lifeIndexIconId = lifeIndexIconId;
}
WeatherEntity.LifeIndexEntity getWeatherLifeIndexData() {
return weatherLifeIndexData;
}
@Override
public int getItemViewType() {
return R.layout.item_life_index;
}
}
static final class LifeItemHolder extends BaseViewHolder<LifeItemData> {
@BindView(R.id.life_type)
TextView lifeType;
@BindView(R.id.life_level)
TextView lifeLevel;
@BindView(R.id.life_index_icon)
ImageView lifeIndexIcon;
WeatherEntity.LifeIndexEntity weatherLifeIndexData;
public LifeItemHolder(View itemView, BaseRecyclerAdapter baseRecyclerAdapter) {
super(itemView, baseRecyclerAdapter);
}
@Override
public void updateItem(LifeItemData lifeItemData, int position) {
weatherLifeIndexData = lifeItemData.getWeatherLifeIndexData();
if (Check.isNull(weatherLifeIndexData)) {
return;
}
lifeType.setText(weatherLifeIndexData.getName());
lifeLevel.setText(weatherLifeIndexData.getLevel());
lifeIndexIcon.setImageResource(lifeItemData.lifeIndexIconId);
}
@Override
public int getContentViewId() {
return R.layout.item_life_index;
}
@OnClick(R.id.life_index_content)
public void onClick() {
Router.instance().getReceiver(WeatherCallBack.LifeAdvice.class).lifeAdvice(weatherLifeIndexData.getName(), weatherLifeIndexData.getContent());
}
}
}