package shts.jp.android.nogifeed.adapters; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import java.util.List; /** * Abstract adapter for ListView or GridView. * @param <T> */ public abstract class BindableAdapter<T> extends ArrayAdapter<T> { private LayoutInflater inflater; public BindableAdapter(Context context, List<T> list) { super(context, -1, list); setup(context); } private void setup(Context context) { inflater = LayoutInflater.from(context); } @Override public final View getView(int position, View view, ViewGroup container) { if (view == null) { view = newView(inflater, position, container); if (view == null) { throw new IllegalStateException("newView result must not be null."); } } bindView(getItem(position), position, view); return view; } public abstract View newView(LayoutInflater inflater, int position, ViewGroup container); public abstract void bindView(T item, int position, View view); }