Skip to content

Instantly share code, notes, and snippets.

@kyleada
Forked from passsy/ArrayAdapter.java
Created March 17, 2016 08:52
Show Gist options
  • Save kyleada/1cbbbe2ddbb0a18bef18 to your computer and use it in GitHub Desktop.
Save kyleada/1cbbbe2ddbb0a18bef18 to your computer and use it in GitHub Desktop.

Revisions

  1. Pascal Welsch created this gist Jul 8, 2014.
    93 changes: 93 additions & 0 deletions ArrayAdapter.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,93 @@
    import android.support.v7.widget.RecyclerView;

    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;

    /**
    * Created by pascalwelsch on 04.07.14.
    */
    public abstract class ArrayAdapter<T, VH extends RecyclerView.ViewHolder>
    extends RecyclerView.Adapter<VH> {

    private List<T> mObjects;

    public ArrayAdapter(final List<T> objects) {
    mObjects = objects;
    }

    /**
    * Adds the specified object at the end of the array.
    *
    * @param object The object to add at the end of the array.
    */
    public void add(final T object) {
    mObjects.add(object);
    notifyItemInserted(getItemCount() - 1);
    }

    /**
    * Remove all elements from the list.
    */
    public void clear() {
    final int size = getItemCount();
    mObjects.clear();
    notifyItemRangeRemoved(0, size);
    }

    @Override
    public int getItemCount() {
    return mObjects.size();
    }

    public T getItem(final int position) {
    return mObjects.get(position);
    }

    public long getItemId(final int position) {
    return position;
    }

    /**
    * Returns the position of the specified item in the array.
    *
    * @param item The item to retrieve the position of.
    * @return The position of the specified item.
    */
    public int getPosition(final T item) {
    return mObjects.indexOf(item);
    }

    /**
    * Inserts the specified object at the specified index in the array.
    *
    * @param object The object to insert into the array.
    * @param index The index at which the object must be inserted.
    */
    public void insert(final T object, int index) {
    mObjects.add(index, object);
    notifyItemInserted(index);

    }

    /**
    * Removes the specified object from the array.
    *
    * @param object The object to remove.
    */
    public void remove(T object) {
    final int position = getPosition(object);
    mObjects.remove(object);
    notifyItemRemoved(position);
    }

    /**
    * Sorts the content of this adapter using the specified comparator.
    *
    * @param comparator The comparator used to sort the objects contained in this adapter.
    */
    public void sort(Comparator<? super T> comparator) {
    Collections.sort(mObjects, comparator);
    notifyItemRangeChanged(0, getItemCount());
    }
    }