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.DecelerateInterpolator;
import android.widget.TextView;
import com.miris.R;
import com.miris.Utils;
import com.miris.net.CalendarListData;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import butterknife.ButterKnife;
import butterknife.InjectView;
import static com.miris.ui.activity.BaseActivity.calendarData;
/**
* Created by fantastic on 2015-11-03.
*/
public class CalendarAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
private static final int VIEW_TYPE_DEFAULT = 1;
private static final int ANIMATED_ITEMS_COUNT = 2;
private Context context;
private int lastAnimatedPosition = -1;
private int itemsCount = 1;
private boolean animateItems = false;
private OnFeedItemClickListener onFeedItemClickListener;
private ArrayList<CalendarListData> doCalendarlist;
SimpleDateFormat CurYearFormat = new SimpleDateFormat("yyyy");
SimpleDateFormat CurMonthFormat = new SimpleDateFormat("MM");
SimpleDateFormat CurDayFormat = new SimpleDateFormat("dd");
DateFormat df = new SimpleDateFormat("yyyy년 MMM dd일");
public CalendarAdapter(Context context, ArrayList<CalendarListData> items) {
this.context = context;
calendarData = items;
this.doCalendarlist = new ArrayList<CalendarListData>();
this.doCalendarlist.addAll(items);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(context).inflate(R.layout.item_calendar, parent, false);
final CellFeedViewHolder cellFeedViewHolder = new CellFeedViewHolder(view);
cellFeedViewHolder.ivUserName.setOnClickListener(this);
cellFeedViewHolder.ivUserDate.setOnClickListener(this);
cellFeedViewHolder.ivUserMessage.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 strDate = df.format(calendarData.get(position).getuser_calendar());
holder.ivUserName.setText("이름 : "+calendarData.get(position).getuser_name());
holder.ivUserDate.setText(strDate);
holder.ivUserMessage.setText("내용 : "+calendarData.get(position).getuser_text());
holder.ivUserName.setTag(position);
holder.ivUserDate.setTag(position);
holder.ivUserMessage.setTag(position);
}
@Override
public int getItemViewType(int position) {
return VIEW_TYPE_DEFAULT;
}
public void setOnFeedItemClickListener(OnFeedItemClickListener onFeedItemClickListener) {
this.onFeedItemClickListener = onFeedItemClickListener;
}
@Override
public int getItemCount() {
return itemsCount;
}
public void updateItems(boolean animated) {
itemsCount = calendarData.size();
animateItems = animated;
notifyDataSetChanged();
}
public static class CellFeedViewHolder extends RecyclerView.ViewHolder {
@InjectView(R.id.ivUserName)
TextView ivUserName;
@InjectView(R.id.ivUserMessage)
TextView ivUserMessage;
@InjectView(R.id.ivUserDate)
TextView ivUserDate;
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.ivUserName) {
if (onFeedItemClickListener != null) {
onFeedItemClickListener.onClickName(view, (Integer) view.getTag());
}
} else if (viewId == R.id.ivUserDate) {
if (onFeedItemClickListener != null) {
onFeedItemClickListener.onClickDate(view, (Integer) view.getTag());
}
}else if (viewId == R.id.ivUserMessage) {
if (onFeedItemClickListener != null) {
onFeedItemClickListener.onClickMessage(view, (Integer) view.getTag());
}
}
}
public interface OnFeedItemClickListener {
public void onClickName(View v, int position);
public void onClickDate(View v, int position);
public void onClickMessage(View v, int position);
}
public void getFilter(Date dateClicked) {
Date today = new Date();
String strCurYear = CurYearFormat.format(dateClicked);
String strCurMonth = CurMonthFormat.format(dateClicked);
String strCurDay = CurDayFormat.format(dateClicked);
calendarData.clear();
if (CurYearFormat.format(today).equals(strCurYear)
&&CurMonthFormat.format(today).equals(strCurMonth)
&&CurDayFormat.format(today).equals(strCurDay)) {
calendarData.addAll(doCalendarlist);
} else {
for (CalendarListData calList : doCalendarlist) {
if (CurYearFormat.format(calList.getuser_calendar()).equals(strCurYear)
&&CurMonthFormat.format(calList.getuser_calendar()).equals(strCurMonth)
&&CurDayFormat.format(calList.getuser_calendar()).equals(strCurDay)) {
calendarData.add(calList);
}
}
}
updateItems(false);
}
}