package com.mingle.adapter;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.OvershootInterpolator;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.mingle.entity.MenuEntity;
import com.mingle.listener.SingleClickListener;
import com.mingle.sweetpick.SweetSheet;
import com.mingle.sweetsheet.R;
import com.nineoldandroids.animation.AnimatorSet;
import com.nineoldandroids.animation.ObjectAnimator;
import com.nineoldandroids.view.ViewHelper;
import java.util.List;
/**
* @author zzz40500
* @version 1.0
* @date 2015/8/5.
* @github: https://github.com/zzz40500
*/
public class MenuRVAdapter extends RecyclerView.Adapter<MenuRVAdapter.MenuVH> {
List<MenuEntity> mDataList;
private boolean mIsAnimation;
private int mItemLayoutId;
public MenuRVAdapter(List<MenuEntity> dataLis, SweetSheet.Type type) {
mDataList = dataLis;
if (type == SweetSheet.Type.RecyclerView) {
mItemLayoutId = R.layout.item_horizon_rv;
} else {
mItemLayoutId = R.layout.item_vertical_rv;
}
}
@Override
public MenuVH onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(mItemLayoutId, null, false);
return new MenuVH(view);
}
@Override
public void onBindViewHolder(MenuVH menuVH, int i) {
menuVH.itemRl.setOnClickListener(mSingleClickListener);
menuVH.itemRl.setTag(menuVH.getAdapterPosition());
MenuEntity menuEntity = mDataList.get(i);
if (menuEntity.iconId != 0) {
menuVH.iv.setVisibility(View.VISIBLE);
menuVH.iv.setImageResource(menuEntity.iconId);
} else if (menuEntity.icon != null) {
menuVH.iv.setVisibility(View.VISIBLE);
menuVH.iv.setImageDrawable(menuEntity.icon);
} else {
menuVH.iv.setVisibility(View.GONE);
}
menuVH.nameTV.setText(menuEntity.title);
menuVH.nameTV.setTextColor(menuEntity.titleColor);
if (mIsAnimation) {
animation(menuVH);
}
}
private void animation(MenuVH menuVH) {
ViewHelper.setAlpha(menuVH.itemView, 0);
ViewHelper.setTranslationY(menuVH.itemView, 300);
ObjectAnimator translationY = ObjectAnimator.ofFloat(menuVH.itemView, "translationY", 500, 0);
translationY.setDuration(300);
translationY.setInterpolator(new OvershootInterpolator(1.6f));
ObjectAnimator alphaIn = ObjectAnimator.ofFloat(menuVH.itemView, "alpha", 0, 1);
alphaIn.setDuration(100);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(translationY, alphaIn);
animatorSet.setStartDelay(30 * menuVH.getAdapterPosition());
animatorSet.start();
}
@Override
public int getItemCount() {
return mDataList.size();
}
public void notifyAnimation() {
mIsAnimation = true;
this.notifyDataSetChanged();
}
public void notifyNoAimation() {
mIsAnimation = false;
this.notifyDataSetChanged();
}
static class MenuVH extends RecyclerView.ViewHolder {
public ImageView iv;
public TextView nameTV;
public RelativeLayout itemRl;
public MenuVH(View itemView) {
super(itemView);
iv = (ImageView) itemView.findViewById(R.id.iv);
nameTV = (TextView) itemView.findViewById(R.id.nameTV);
itemRl = (RelativeLayout) itemView.findViewById(R.id.itemRl);
}
}
public AdapterView.OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(AdapterView.OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
private SingleClickListener mSingleClickListener = new SingleClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag();
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(null, v, position, position);
}
}
});
}