package com.jobmineplus.mobile.widgets;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
public abstract class ViewAdapterBase<TItem> extends ArrayAdapter<TItem>{
protected ArrayList<TItem> entries;
private Activity activity;
private int widgetLayout;
private int[] resources;
public ViewAdapterBase(Activity a, int widgetResourceLayout, int[] viewResourceIdListInWidget, ArrayList<TItem> list) {
super(a, 0, list);
entries = list;
activity = a;
resources = viewResourceIdListInWidget;
widgetLayout = widgetResourceLayout;
}
protected abstract void setWidgetValues(int position, TItem item, View[] elements, View layout);
protected Activity getActivity() {
return activity;
}
public ArrayList<TItem> getList() {
return entries;
}
protected void onCreateListItem(int position, View item, ViewGroup parent) {
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View viewObj = convertView;
View[] elements = null;
if (viewObj == null) {
LayoutInflater inflator = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
viewObj = inflator.inflate(widgetLayout, null);
int size = resources.length;
elements = new View[size];
for (int i = 0; i < size; i++) {
elements[i] = viewObj.findViewById(resources[i]);
}
viewObj.setTag(elements);
onCreateListItem(position, viewObj, parent);
} else {
elements = (View[]) viewObj.getTag();
}
final TItem item = entries.get(position);
for (View v: elements) {
v.setVisibility(View.VISIBLE);
}
setWidgetValues(position, item, elements, viewObj);
return viewObj;
}
}