package com.liyu.fakeweather.ui.weather.adapter;

import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.chad.library.adapter.base.BaseItemDraggableAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.liyu.fakeweather.R;
import com.liyu.fakeweather.model.WeatherBean;
import com.liyu.fakeweather.model.WeatherCity;
import com.liyu.fakeweather.utils.SimpleSubscriber;
import com.liyu.fakeweather.utils.ThemeUtil;
import com.liyu.fakeweather.utils.WeatherUtil;

import java.util.List;

import rx.android.schedulers.AndroidSchedulers;

/**
 * Created by liyu on 2017/10/18.
 */

public class CardWeatherAdapter extends BaseItemDraggableAdapter<WeatherCity, BaseViewHolder> {

    OnItemClickListener onItemClickListener;

    public CardWeatherAdapter(int layoutResId, List<WeatherCity> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(final BaseViewHolder helper, WeatherCity item) {
        TextView tvName = helper.getView(R.id.tv_card_city_name);
        if (helper.getAdapterPosition() == 0) {
            tvName.setCompoundDrawablesWithIntrinsicBounds(null, null,
                    ThemeUtil.setTintDrawable(R.drawable.ic_location, mContext,
                            ThemeUtil.getCurrentColorPrimary(mContext)), null);
        }
        tvName.setText(item.getCityName());
        helper.setText(R.id.tv_card_weather, TextUtils.isEmpty(item.getWeatherText()) ? "NA" : item.getWeatherText());
        helper.setText(R.id.tv_card_temp, TextUtils.isEmpty(item.getWeatherTemp()) ? "NA" : item.getWeatherTemp() + "℃");
        final ImageView imageView = helper.getView(R.id.iv_card_weather);
        WeatherUtil.getInstance().getWeatherDict(item.getWeatherCode()).observeOn(AndroidSchedulers.mainThread()).subscribe(new SimpleSubscriber<WeatherBean>() {
            @Override
            public void onNext(WeatherBean weatherBean) {
                Glide.with(mContext).load(weatherBean.getIcon()).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
            }
        });
    }

    @Override
    public void onBindViewHolder(BaseViewHolder holder, final int positions) {
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onItemClickListener != null) {
                    onItemClickListener.onItemClick(CardWeatherAdapter.this, v, positions);
                }
            }
        });
        super.onBindViewHolder(holder, positions);
    }

    @Override
    public void setOnItemClickListener(@Nullable OnItemClickListener listener) {
        onItemClickListener = listener;
    }
}