/**
*
*/
package org.commcare.android.adapters;
import java.util.ArrayList;
import java.util.List;
import org.commcare.android.models.Entity;
import org.commcare.android.util.DetailCalloutListener;
import org.commcare.android.view.EntityDetailView;
import org.commcare.suite.model.Detail;
import org.commcare.util.CommCareSession;
import org.odk.collect.android.views.media.AudioController;
import android.content.Context;
import android.database.DataSetObserver;
import android.media.MediaPlayer;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
/**
* @author ctsims
*
*/
public class EntityDetailAdapter implements ListAdapter {
Context context;
CommCareSession session;
Detail detail;
Entity entity;
DetailCalloutListener listener;
List<Integer> valid;
AudioController controller;
int detailIndex;
public EntityDetailAdapter(Context context, CommCareSession session, Detail detail, Entity entity,
DetailCalloutListener listener, AudioController controller, int detailIndex) {
this.context = context;
this.session = session;
this.detail = detail;
this.entity = entity;
this.listener = listener;
this.controller = controller;
valid = new ArrayList<Integer>();
for(int i = 0 ; i < entity.getNumFields() ; ++i ) {
if(entity.isValidField(i)) {
valid.add(i);
}
}
this.detailIndex = detailIndex;
}
/* (non-Javadoc)
* @see android.widget.ListAdapter#areAllItemsEnabled()
*/
public boolean areAllItemsEnabled() {
return false;
}
/* (non-Javadoc)
* @see android.widget.ListAdapter#isEnabled(int)
*/
public boolean isEnabled(int position) {
return false;
}
/* (non-Javadoc)
* @see android.widget.Adapter#getCount()
*/
public int getCount() {
return valid.size();
}
/* (non-Javadoc)
* @see android.widget.Adapter#getItem(int)
*/
public Object getItem(int position) {
return entity.getField(valid.get(position));
}
/* (non-Javadoc)
* @see android.widget.Adapter#getItemId(int)
*/
public long getItemId(int position) {
return valid.get(position);
}
/* (non-Javadoc)
* @see android.widget.Adapter#getItemViewType(int)
*/
public int getItemViewType(int position) {
return 0;
}
/* (non-Javadoc)
* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
*/
public View getView(int position, View convertView, ViewGroup parent) {
EntityDetailView dv =(EntityDetailView)convertView;
if (dv == null) {
dv = new EntityDetailView(context, session, detail, entity, valid.get(position), controller,
detailIndex);
dv.setCallListener(listener);
} else{
dv.setParams(session, detail, entity, valid.get(position), detailIndex);
dv.setCallListener(listener);
}
return dv;
}
/* (non-Javadoc)
* @see android.widget.Adapter#getViewTypeCount()
*/
public int getViewTypeCount() {
return 1;
}
/* (non-Javadoc)
* @see android.widget.Adapter#hasStableIds()
*/
public boolean hasStableIds() {
return true;
}
/* (non-Javadoc)
* @see android.widget.Adapter#isEmpty()
*/
public boolean isEmpty() {
return getCount() > 0;
}
/* (non-Javadoc)
* @see android.widget.Adapter#registerDataSetObserver(android.database.DataSetObserver)
*/
public void registerDataSetObserver(DataSetObserver observer) {
}
/* (non-Javadoc)
* @see android.widget.Adapter#unregisterDataSetObserver(android.database.DataSetObserver)
*/
public void unregisterDataSetObserver(DataSetObserver observer) {
}
}