package com.pedrocarrillo.expensetracker.adapters; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SwitchCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.CompoundButton; import android.widget.TextView; import com.pedrocarrillo.expensetracker.ExpenseTrackerApp; import com.pedrocarrillo.expensetracker.R; import com.pedrocarrillo.expensetracker.custom.BaseViewHolder; import com.pedrocarrillo.expensetracker.entities.Reminder; import com.pedrocarrillo.expensetracker.utils.Util; import java.util.List; /** * Created by Pedro on 9/26/2015. */ public class RemindersAdapter extends BaseRecyclerViewAdapter<RemindersAdapter.ViewHolder> { private List<Reminder> mReminderList; private int lastPosition = -1; private RemindersAdapterOnClickHandler onRecyclerClickListener; public class ViewHolder extends BaseViewHolder implements CompoundButton.OnCheckedChangeListener { public TextView tvTitle; public TextView tvDate; public SwitchCompat scState; public ViewHolder(View v, RemindersAdapterOnClickHandler onRecyclerClickListener) { super(v, onRecyclerClickListener); tvTitle = (TextView)v.findViewById(R.id.tv_name); tvDate = (TextView)v.findViewById(R.id.tv_date); scState = (SwitchCompat)v.findViewById(R.id.sc_reminder); scState.setOnCheckedChangeListener(this); v.setOnClickListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(this.itemView.getTag() != null) { ((RemindersAdapterOnClickHandler)onRecyclerClickListener).onChecked(isChecked, this); } } } public RemindersAdapter(List<Reminder> mReminderList, RemindersAdapterOnClickHandler onRecyclerClickListener) { this.mReminderList = mReminderList; this.onRecyclerClickListener = onRecyclerClickListener; } @Override public RemindersAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.layout_reminder_item, parent, false); return new ViewHolder(v, onRecyclerClickListener); } @Override public void onBindViewHolder(ViewHolder holder, int position) { final Reminder reminder = mReminderList.get(position); if (reminder.getName() != null) holder.tvTitle.setText(reminder.getName()); holder.tvDate.setText("Day of the Month: ".concat(String.valueOf(reminder.getDay())).concat(" - ").concat("Time: ").concat(Util.formatDateToString(reminder.getDate(), "HH:mm"))); holder.scState.setChecked(reminder.isState()); holder.itemView.setTag(reminder); holder.itemView.setSelected(isSelected(position)); setAnimation(holder, position); } @Override public int getItemCount() { return mReminderList.size(); } public void updateReminders(List<Reminder> mReminderList) { this.mReminderList = mReminderList; notifyDataSetChanged(); } private void setAnimation(ViewHolder holder, int position) { if (position > lastPosition) { Animation animation = AnimationUtils.loadAnimation(ExpenseTrackerApp.getContext(), R.anim.push_left_in); holder.itemView.startAnimation(animation); lastPosition = position; } } public interface RemindersAdapterOnClickHandler extends BaseViewHolder.RecyclerClickListener { void onChecked(boolean checked, ViewHolder vh); } }