package com.hannesdorfmann.mosby3.sample.mail.search; import android.content.Context; import com.hannesdorfmann.annotatedadapter.annotation.ViewType; import com.hannesdorfmann.mosby3.sample.mail.R; import com.hannesdorfmann.mosby3.sample.mail.mails.MailsAdapter; import com.hannesdorfmann.mosby3.sample.mail.model.mail.Mail; import java.util.List; /** * @author Hannes Dorfmann */ public class SearchResultAdapter extends MailsAdapter implements SearchResultAdapterBinder { @ViewType( layout = R.layout.list_load_more) public final int loadMore = 1; private boolean showLoadMore = false; public SearchResultAdapter(Context context, MailClickedListener clickListener, MailStarListner starListener, PersonClickListener personClickListener) { super(context, clickListener, starListener, personClickListener); } @Override public int getItemCount() { return super.getItemCount() + (showLoadMore ? 1 : 0); } @Override public int getItemViewType(int position) { if (showLoadMore && position == items.size()) { // At last position add one return loadMore; } return super.getItemViewType(position); } public void setLoadMore(boolean enabled) { if (showLoadMore != enabled) { if (showLoadMore) { showLoadMore = false; notifyItemRemoved(items.size()); // Remove last position } else { showLoadMore = true; notifyItemInserted(items.size()); } } } public void addOlderMails(List<Mail> olderMails) { if (!olderMails.isEmpty()) { int startPosition = items.size(); items.addAll(olderMails); notifyItemRangeInserted(startPosition, olderMails.size()); } } @Override public void bindViewHolder(SearchResultAdapterHolders.LoadMoreViewHolder vh, int position) { // Nothing to bind } public Mail getLastMailInList() { return items == null ? null : items.get(items.size() - 1); } }