package org.getlantern.firetweet.adapter;
import android.support.v7.widget.RecyclerView.Adapter;
import android.support.v7.widget.RecyclerView.ViewHolder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* Created by mariotaku on 14/10/27.
*/
public abstract class ArrayRecyclerAdapter<T, H extends ViewHolder> extends Adapter<H> {
protected final ArrayList<T> mData = new ArrayList<T>();
@Override
public final void onBindViewHolder(H holder, int position) {
onBindViewHolder(holder, position, getItem(position));
}
public abstract void onBindViewHolder(H holder, int position, T item);
public void add(final T item) {
if (item == null) return;
mData.add(item);
notifyDataSetChanged();
}
public void addAll(final Collection<? extends T> collection) {
mData.addAll(collection);
notifyDataSetChanged();
}
public void clear() {
mData.clear();
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return mData.size();
}
public T getItem(final int position) {
return mData.get(position);
}
public boolean remove(final int position) {
final boolean ret = mData.remove(position) != null;
notifyDataSetChanged();
return ret;
}
public void removeAll(final List<T> collection) {
mData.removeAll(collection);
notifyDataSetChanged();
}
public void sort(final Comparator<? super T> comparator) {
Collections.sort(mData, comparator);
notifyDataSetChanged();
}
}