package io.github.xwz.base.adapters; import android.support.v17.leanback.widget.ObjectAdapter; import android.support.v17.leanback.widget.Presenter; import android.support.v17.leanback.widget.PresenterSelector; import java.util.ArrayList; import java.util.Collection; /** * A simple array adapter to add and replace a list of items. */ public class BaseArrayAdapter<T> extends ObjectAdapter { private ArrayList<T> mItems = new ArrayList<>(); public BaseArrayAdapter(Presenter presenter) { super(presenter); } public BaseArrayAdapter(PresenterSelector selector) { super(selector); } @Override public int size() { return mItems.size(); } @Override public T get(int index) { return mItems.get(index); } public void addAll(int index, Collection<T> items) { int itemsCount = items.size(); if (itemsCount == 0) { return; } mItems.addAll(index, items); notifyItemRangeInserted(index, itemsCount); } public void replaceItems(Collection<T> items) { int current = mItems.size(); int newItems = items.size(); mItems.clear(); mItems.addAll(0, items); notifyItemRangeChanged(0, newItems); if (newItems > current) { notifyItemRangeInserted(current, newItems - current); } else if (newItems < current) { notifyItemRangeRemoved(newItems, current - newItems); } } }