package se.alexanderblom.delicious.util;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public abstract class ListAdapter<T> extends BaseAdapter {
private LayoutInflater inflater;
private List<T> list;
public ListAdapter(Context context) {
inflater = LayoutInflater.from(context);
}
public ListAdapter(Context context, List<T> list) {
this(context);
this.list = list;
}
@Override
public int getCount() {
return list != null ? list.size() : 0;
}
@Override
public T getItem(int position) {
return list != null ? list.get(position) : null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public final View getView(int position, View v, ViewGroup parent) {
if (v == null) {
v = newView(inflater, parent, position);
}
bindView(v, list.get(position));
return v;
}
@Override
public final View getDropDownView(int position, View v, ViewGroup parent) {
if (v == null) {
v = newDropDownView(inflater, parent, position);
}
bindDropDownView(v, list.get(position));
return v;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
notifyDataSetChanged();
}
public void clear() {
setList(null);
}
public abstract View newView(LayoutInflater inflater, ViewGroup parent, int position);
public abstract void bindView(View v, T item);
public View newDropDownView(LayoutInflater inflater, ViewGroup parent, int position) { return newView(inflater, parent, position); }
public void bindDropDownView(View v, T item) { bindView(v, item); }
}