package org.smartpaws.recycler; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.smartpaws.R; import org.smartpaws.fragments.ReminderFragment; import org.smartpaws.notifications.AlarmService; import org.smartpaws.recycler.cards.CardReminder; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ReminderRecyclerView extends RecyclerView.Adapter<CardReminder> { private final ReminderFragment parent; private final List<AlarmService.Reminder> reminders = new ArrayList<>(); public ReminderRecyclerView(AlarmService.Reminder[] reminders, ReminderFragment parent) { this.parent = parent; this.reminders.clear(); Collections.addAll(this.reminders, reminders); } @Override public CardReminder onCreateViewHolder(ViewGroup viewGroup, int pos) { return new CardReminder( LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.card_reminder, viewGroup, false), reminders.get(pos), pos, ReminderRecyclerView.this); } @Override public void onBindViewHolder(CardReminder card, int pos) { AlarmService.Reminder reminder = reminders.get(pos); card.setReminder(reminder); card.setIsRecyclable(false); } @Override public int getItemCount() { return reminders.size(); } public void removeItem(CardReminder cardReminder) { int pos = -1; if (this.reminders.contains(cardReminder.getReminder())) { pos = this.reminders.indexOf(cardReminder.getReminder()); this.reminders.remove(cardReminder.getReminder()); if (getItemCount() == 0) { parent.getRoot().findViewById(R.id.cardList).setVisibility(View.GONE); parent.getRoot().findViewById(R.id.no_reminders_container).setVisibility(View.VISIBLE); } } if (pos > -1) { notifyItemRemoved(pos); } } }