package com.commonsensenet.realfarm.view; import java.util.List; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import com.commonsensenet.realfarm.dataaccess.RealFarmProvider; import com.commonsensenet.realfarm.model.aggregate.AggregateItem; import com.commonsensenet.realfarm.utils.ActionDataFactory; public class AggregateItemAdapter extends ArrayAdapter<AggregateItem> { /** Database provided that used to obtain the required data. */ private RealFarmProvider mDataProvider; /** Type of ActionType that the Adapter is handling. */ private int mActionTypeId; /** * Creates a new AggregateItemAdapter instance. */ public AggregateItemAdapter(Context context, List<AggregateItem> aggregates, int actionTypeId, RealFarmProvider dataProvider) { super(context, android.R.layout.simple_list_item_1, aggregates); // sets the type of action that is being handled. mActionTypeId = actionTypeId; // sets the data provider. mDataProvider = dataProvider; } public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; AggregateItemWrapper wrapper = null; if (row == null) { wrapper = ActionDataFactory.getAggregateWrapper(getContext(), row, parent, mActionTypeId); // extracts the row from the wrapper row = wrapper.getRow(); // sets the tag to avoid looking for it. row.setTag(wrapper); } else { wrapper = (AggregateItemWrapper) row.getTag(); } // populates the data from the AggregateItem wrapper.populateFrom(getItem(position), mDataProvider); return (row); } }