package de.tum.in.tumcampusapp.adapters; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; import de.tum.in.tumcampusapp.cards.CafeteriaMenuCard; import de.tum.in.tumcampusapp.cards.ChatMessagesCard; import de.tum.in.tumcampusapp.cards.EduroamCard; import de.tum.in.tumcampusapp.cards.EduroamFixCard; import de.tum.in.tumcampusapp.cards.FirstUseCard1; import de.tum.in.tumcampusapp.cards.FirstUseCard2; import de.tum.in.tumcampusapp.cards.MVVCard; import de.tum.in.tumcampusapp.cards.NewsCard; import de.tum.in.tumcampusapp.cards.NextLectureCard; import de.tum.in.tumcampusapp.cards.NoInternetCard; import de.tum.in.tumcampusapp.cards.RestoreCard; import de.tum.in.tumcampusapp.cards.Support; import de.tum.in.tumcampusapp.cards.SurveyCard; import de.tum.in.tumcampusapp.cards.TuitionFeesCard; import de.tum.in.tumcampusapp.cards.generic.Card; import de.tum.in.tumcampusapp.managers.CardManager; /** * Adapter for the cards start page used in {@link de.tum.in.tumcampusapp.activities.MainActivity} */ public class CardsAdapter extends RecyclerView.Adapter<Card.CardViewHolder> { public static Card getItem(int i) { return CardManager.getCard(i); } @Override public Card.CardViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { switch (viewType) { case CardManager.CARD_CAFETERIA: return CafeteriaMenuCard.inflateViewHolder(viewGroup); case CardManager.CARD_TUITION_FEE: return TuitionFeesCard.inflateViewHolder(viewGroup); case CardManager.CARD_NEXT_LECTURE: return NextLectureCard.inflateViewHolder(viewGroup); case CardManager.CARD_RESTORE: return RestoreCard.inflateViewHolder(viewGroup); case CardManager.CARD_FIRST_USE_1: return FirstUseCard1.inflateViewHolder(viewGroup); case CardManager.CARD_FIRST_USE_2: return FirstUseCard2.inflateViewHolder(viewGroup); case CardManager.CARD_NO_INTERNET: return NoInternetCard.inflateViewHolder(viewGroup); case CardManager.CARD_MVV: return MVVCard.inflateViewHolder(viewGroup); case CardManager.CARD_NEWS: //Fallthrough case CardManager.CARD_NEWS_FILM: return NewsCard.inflateViewHolder(viewGroup, viewType); case CardManager.CARD_EDUROAM: return EduroamCard.inflateViewHolder(viewGroup); case CardManager.CARD_EDUROAM_FIX: return EduroamFixCard.inflateViewHolder(viewGroup); case CardManager.CARD_CHAT: return ChatMessagesCard.inflateViewHolder(viewGroup); case CardManager.CARD_SUPPORT: return Support.inflateViewHolder(viewGroup); case CardManager.CARD_SURVEY: return SurveyCard.inflateViewHolder(viewGroup); default: throw new UnsupportedOperationException(); } } @Override public void onBindViewHolder(Card.CardViewHolder viewHolder, int position) { Card card = CardManager.getCard(position); viewHolder.setCurrentCard(card); card.updateViewHolder(viewHolder); } @Override public int getItemViewType(int position) { return CardManager.getCard(position).getType(); } @Override public long getItemId(int i) { Card card = CardManager.getCard(i); return card.getType() + (card.getId() << 4); } @Override public int getItemCount() { return CardManager.getCardCount(); } public int remove(Card card) { int index = CardManager.remove(card); notifyItemRemoved(index); return index; } public Card remove(int position) { final Card c = CardManager.remove(position); notifyItemRemoved(position); return c; } public void insert(int position, Card item) { CardManager.insert(position, item); notifyItemInserted(position); } }