package com.mathiasluo.designer.adpter;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.mathiasluo.designer.R;
import com.mathiasluo.designer.app.APP;
import com.mathiasluo.designer.bean.Shot;
import com.mathiasluo.designer.model.ImageModelImpl;
import com.mathiasluo.designer.utils.DensityUtil;
import com.mathiasluo.designer.view.activity.ShotActivity;
import com.mathiasluo.designer.view.widget.CircleImageView;
import com.mikepenz.iconics.IconicsDrawable;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Created by MathiasLuo on 2016/3/3.
*/
public class ShotAdapter extends RecyclerView.Adapter<ShotAdapter.ViewHolder> {
private static final int TYPE_ITEM = 0;
private static final int TYPE_FOOTER = 1;
//上拉加载更多
public static final int PULLUP_LOAD_MORE = 0;
//正在加载中
public static final int LOADING_MORE = 1;
//上拉加载更多状态-默认为0
private int load_more_status = 0;
public static List<Shot> mDataList;
private int pre_page = 1;
private Activity activity;
public ShotAdapter(List<Shot> mDataList, Activity activity) {
this.mDataList = mDataList;
this.activity = activity;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view;
if (viewType == TYPE_ITEM) {
view = inflater.inflate(R.layout.recycle_shot_item, parent, false);
view.setTag(TYPE_ITEM);
} else {
view = inflater.inflate(R.layout.recycle_foot_view, parent, false);
view.setTag(TYPE_FOOTER);
}
return new ViewHolder(view);
}
@Override
public int getItemViewType(int position) {
// 最后一个item设置为footerView
if (position + 1 == getItemCount()) {
return TYPE_FOOTER;
} else {
return TYPE_ITEM;
}
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
if (position < mDataList.size()) {
Shot shot = mDataList.get(position);
holder.commentsCountText.setText(shot.getCommentsCount().toString());
holder.likeCountText.setText(shot.getLikesCount().toString() + " 人喜欢这张照片。");
holder.usernameText.setText(shot.getUser().getUsername().toString());
// holder.viewsCountText.setText(shot.getViewsCount().toString());
holder.mFavoriteImg.setOnClickListener(v -> {
if (!holder.ISLIKE) {
holder
.mFavoriteImg
.setImageDrawable(new IconicsDrawable(APP.getInstance(), "gmi_favorite")
.color(Color.parseColor("#FF4081"))
);
holder.ISLIKE = true;
} else {
holder
.mFavoriteImg
.setImageDrawable(new IconicsDrawable(APP.getInstance(), "gmi_favorite_outline")
.color(Color.parseColor("#FF4081"))
);
holder.ISLIKE = false;
}
}
);
ViewGroup.LayoutParams params = holder.shotImage.getLayoutParams();
params.height = DensityUtil.dip2px(APP.getInstance(), shot.getHeight());
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
holder.shotImage.setLayoutParams(params);
ImageModelImpl.getInstance().loadImage(shot.getImages().getNormal(), holder.shotImage);
ImageModelImpl.getInstance().loadImageWithTargetView(shot.getUser().getAvatarUrl(), new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) {
holder.avatarImage.setImageBitmap(bitmap);
}
});
holder.shotImage.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, ShotActivity.class);
intent.putExtra("position", position);
activity.startActivity(intent);
/*
想了半天,还是觉得不要这个动画...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptions options = ActivityOptions
.makeSceneTransitionAnimation(activity, holder.shotImage, "shotImage");
activity.startActivity(intent, options.toBundle());
} else {
activity.startActivity(intent);
}
*/
}
});
}
}
@Override
public int getItemCount() {
return mDataList.size() == 0 ? 0 : mDataList.size() + 1;
}
public void addMoreData(List<Shot> datas, int current_page) {
if (current_page == pre_page) {
mDataList = datas;
} else
mDataList.addAll(datas);
notifyDataSetChanged();
}
/**
* //上拉加载更多
* PULLUP_LOAD_MORE=0;
* //正在加载中
* LOADING_MORE=1;
* //加载完成已经没有更多数据了
* NO_MORE_DATA=2;
*
* @param status
*/
public void changeMoreStatus(int status) {
load_more_status = status;
notifyDataSetChanged();
}
public static List<Shot> removeDuplicateDataInOrder(List<Shot> newList, List<Shot> oldList) {
for (int i = 0; i < 10; i++) {
oldList.add(i, newList.get(i));
}
return oldList;
}
static class ViewHolder extends RecyclerView.ViewHolder {
boolean ISLIKE = false;
@Bind(R.id.shot_image)
ImageView shotImage;
@Bind(R.id.avatar_image)
CircleImageView avatarImage;
@Bind(R.id.username_text)
TextView usernameText;
@Bind(R.id.commentsCount_text)
TextView commentsCountText;
@Bind(R.id.likeCount_text)
TextView likeCountText;
@Bind(R.id.shot_favorite)
ImageView mFavoriteImg;
ViewHolder(View view) {
super(view);
if ((int) view.getTag() == TYPE_ITEM)
ButterKnife.bind(this, view);
}
}
}