package com.liyu.fakeweather.ui.girl.adapter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.liyu.fakeweather.R;
import com.liyu.fakeweather.model.Girl;
import com.liyu.fakeweather.ui.girl.MzituPictureActivity;
import com.liyu.fakeweather.ui.girl.PictureActivity;
import com.liyu.fakeweather.widgets.RatioImageView;
import java.util.List;
/**
* Created by liyu on 2016/12/9.
*/
public class GirlsAdapter extends RecyclerView.Adapter<GirlsAdapter.GirlViewHolder> {
private List<Girl> girls;
private Context context;
private LayoutInflater inflater;
public GirlsAdapter(Context context, List<Girl> list) {
this.context = context;
this.girls = list;
this.inflater = LayoutInflater.from(context);
}
public void setNewData(List<Girl> data) {
this.girls = data;
notifyDataSetChanged();
}
public List<Girl> getData() {
return girls;
}
public void addData(int position, List<Girl> data) {
this.girls.addAll(position, data);
this.notifyItemRangeInserted(position, data.size());
}
private void startPictureActivity(View transitView, int position) {
Intent intent = PictureActivity.newIntent(context, getData(), position);
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(
(Activity) context, transitView, PictureActivity.TRANSIT_PIC);
try {
ActivityCompat.startActivity(context, intent, optionsCompat.toBundle());
} catch (IllegalArgumentException e) {
e.printStackTrace();
context.startActivity(intent);
}
}
@Override
public GirlViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_gank, parent, false);
GirlViewHolder holder = new GirlViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final GirlViewHolder holder, final int position) {
final Girl girl = girls.get(position);
if (girl.getHeight() != 0) {
holder.iv.setOriginalSize(girl.getWidth(), girl.getHeight());
} else {
holder.iv.setOriginalSize(236, 354);
}
holder.iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (TextUtils.isEmpty(girl.getLink())) {
startPictureActivity(view, position);
} else {
Intent intent = MzituPictureActivity.newIntent(context, girl.getLink(), "");
context.startActivity(intent);
}
}
});
Glide.with(context).load(girl.getUrl()).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ic_glide_holder).crossFade(500).into(holder.iv);
}
@Override
public int getItemCount() {
return girls == null ? 0 : girls.size();
}
@Override
public int getItemViewType(int position) {
Girl girl = girls.get(position);
return Math.round((float) girl.getWidth() / (float) girl.getHeight() * 10f);
}
@Override
public long getItemId(int position) {
return girls.get(position).hashCode();
}
class GirlViewHolder extends RecyclerView.ViewHolder {
RatioImageView iv;
public GirlViewHolder(View view) {
super(view);
iv = (RatioImageView) view.findViewById(R.id.iv_gank);
}
}
}