package com.lateensoft.pathfinder.toolkit.views.widget; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import org.jetbrains.annotations.Nullable; import java.util.List; public abstract class BaseArrayAdapter<T> extends ArrayAdapter<T> { private ListViewRowFactory rowFactory; public BaseArrayAdapter(Context context, int resource) { super(context, resource); init(); } public BaseArrayAdapter(Context context, int resource, int textViewResourceId) { super(context, resource, textViewResourceId); init(); } public BaseArrayAdapter(Context context, int resource, T[] objects) { super(context, resource, objects); init(); } public BaseArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects) { super(context, resource, textViewResourceId, objects); init(); } public BaseArrayAdapter(Context context, int resource, List<T> objects) { super(context, resource, objects); init(); } public BaseArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) { super(context, resource, textViewResourceId, objects); init(); } private void init() { rowFactory = newRowFactory(); } protected abstract ListViewRowFactory newRowFactory(); @Nullable @Override public View getView(int position, View convertView, ViewGroup parent) { return rowFactory.rowFrom(getContext(), position, convertView, parent); } }