package edu.mit.mitmobile2; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; public abstract class SimpleArrayAdapter<T> extends ArrayAdapter<T> { protected Context mContext; protected int mRowResourceId; boolean mHasHeader; public SimpleArrayAdapter(Context context, List<T> items, int rowResourceId) { super(context, 0, 0, items); mContext = context; mRowResourceId = rowResourceId; mHasHeader = false; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { LayoutInflater inflator = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflator.inflate(mRowResourceId, null); } final T item = getItem(position); updateView(item, convertView); return convertView; } public abstract void updateView(T item, View view); public static interface OnItemClickListener<T> { public void onItemSelected(T item); } public void setOnItemClickListener(AdapterView<?> adapterView, final OnItemClickListener<T> listener) { adapterView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(mHasHeader) { position = position - 1; } T item = getItem(position); listener.onItemSelected(item); } }); } public void setHasHeader(boolean hasHeader) { mHasHeader = true; } }