package com.miris.ui.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.OvershootInterpolator;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.miris.R;
import com.miris.Utils;
import com.miris.net.ItnewsListData;
import com.squareup.picasso.Picasso;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import butterknife.ButterKnife;
import butterknife.InjectView;
/**
* Created by fantastic on 2015-11-03.
*/
public class ITnewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
private static final int VIEW_TYPE_DEFAULT = 1;
private static final DecelerateInterpolator DECCELERATE_INTERPOLATOR = new DecelerateInterpolator();
private static final AccelerateInterpolator ACCELERATE_INTERPOLATOR = new AccelerateInterpolator();
private static final OvershootInterpolator OVERSHOOT_INTERPOLATOR = new OvershootInterpolator(4);
private static final int ANIMATED_ITEMS_COUNT = 2;
private Context context;
private int lastAnimatedPosition = -1;
private int itemsCount = 1;
private boolean animateItems = false;
private OnNewsItemClickListener onNewsItemClickListener;
private ArrayList<ItnewsListData> itnewsListDatas;
public ITnewAdapter(Context context, ArrayList<ItnewsListData> items) {
this.context = context;
itnewsListDatas = items;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(context).inflate(R.layout.item_itnews, parent, false);
final CellFeedViewHolder cellFeedViewHolder = new CellFeedViewHolder(view);
cellFeedViewHolder.ivNewsImg.setOnClickListener(this);
cellFeedViewHolder.ivNewsTitle.setOnClickListener(this);
cellFeedViewHolder.ivNewsName.setOnClickListener(this);
cellFeedViewHolder.ivNewsLinearLayout.setOnClickListener(this);
return cellFeedViewHolder;
}
private void runEnterAnimation(View view, int position) {
if (!animateItems || position >= ANIMATED_ITEMS_COUNT - 1) {
return;
}
if (position > lastAnimatedPosition) {
lastAnimatedPosition = position;
view.setTranslationY(Utils.getScreenHeight(context));
view.animate()
.translationY(0)
.setInterpolator(new DecelerateInterpolator(3.f))
.setDuration(700)
.start();
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
runEnterAnimation(viewHolder.itemView, position);
final CellFeedViewHolder holder = (CellFeedViewHolder) viewHolder;
String str = itnewsListDatas.get(position).getdueDate();
Date date = new Date(str);
SimpleDateFormat fdm = new SimpleDateFormat("MM월 dd일 HH시 mm분 ");
if (!itnewsListDatas.get(position).getImg().equals("")) {
Picasso.with(context)
.load(itnewsListDatas.get(position).getImg())
.into(holder.ivNewsImg);
} else {
Picasso.with(context)
.load(R.drawable.no_image)
.into(holder.ivNewsImg);
}
holder.ivNewsTitle.setText(itnewsListDatas.get(position).getTitle());
holder.ivNewsName.setText(itnewsListDatas.get(position).getauthor() + " " + fdm.format(date));
holder.ivNewsImg.setTag(position);
holder.ivNewsTitle.setTag(position);
holder.ivNewsName.setTag(position);
holder.ivNewsLinearLayout.setTag(position);
}
@Override
public int getItemViewType(int position) {
return VIEW_TYPE_DEFAULT;
}
public void setOnNewsItemClickListener(OnNewsItemClickListener onNewsItemClickListener) {
this.onNewsItemClickListener = onNewsItemClickListener;
}
@Override
public int getItemCount() {
return itemsCount;
}
public void updateItems(boolean animated) {
itemsCount = itnewsListDatas.size();
animateItems = animated;
notifyDataSetChanged();
}
public static class CellFeedViewHolder extends RecyclerView.ViewHolder {
@InjectView(R.id.ivNewsImg)
ImageView ivNewsImg;
@InjectView(R.id.ivNewsTitle)
TextView ivNewsTitle;
@InjectView(R.id.ivNewsName)
TextView ivNewsName;
@InjectView(R.id.ivNewsLinearLayout)
LinearLayout ivNewsLinearLayout;
View vProgressBg;
public CellFeedViewHolder(View view) {
super(view);
ButterKnife.inject(this, view);
}
}
@Override
public void onClick(View view) {
final int viewId = view.getId();
if (viewId == R.id.ivNewsImg) {
if (onNewsItemClickListener != null) {
onNewsItemClickListener.onSendImg(view, (Integer) view.getTag());
}
} else if (viewId == R.id.ivNewsTitle) {
if (onNewsItemClickListener != null) {
onNewsItemClickListener.onSendTitle(view, (Integer) view.getTag());
}
} else if (viewId == R.id.ivNewsName) {
onNewsItemClickListener.onSendName(view, (Integer) view.getTag());
} else if (viewId == R.id.ivNewsLinearLayout) {
onNewsItemClickListener.onSendLinearLayout(view, (Integer) view.getTag());
}
}
public interface OnNewsItemClickListener {
public void onSendImg(View v, int position);
public void onSendTitle(View v, int position);
public void onSendName(View v, int position);
public void onSendLinearLayout(View v, int position);
}
}