package es.uva.pfc.jcmp;
import java.util.List;
import es.uva.pfc.jcmp.datos.Disposicion;
import es.uva.pfc.jcmp.datos.NotasDbAdapter;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Color;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
/**
* El objetivo de esta clase es dibujar la lista de disposiciones por pantalla. Demuestra otra forma,
* diferente a la estandar, de construir interfaces. En este caso desde codigo.
*
* @author Juan Carlos Manso Perez
*
*/
public class DisposicionAdapter extends BaseAdapter {
private static final String CLASETAG = DisposicionAdapter.class.getSimpleName();
private final Context context;
private final int comienzaEn;
private final List<Disposicion> disposiciones;
private String textoDisposicion;
public DisposicionAdapter(Context context, List<Disposicion> disposiciones, int startIn) {
this.context = context;
this.comienzaEn = startIn;
this.disposiciones = disposiciones;
textoDisposicion = new String();
Log.v(Constantes.LOGTAG, " " + DisposicionAdapter.CLASETAG + " numero disposiciones: " + this.disposiciones.size());
}
/**
* @return numero de disposiciones
*/
public int getCount() {
return this.disposiciones.size();
}
/**
* @param posicion del item a requerir
* @return item situado en la posicin dada
*/
public Object getItem(int position) {
return this.disposiciones.get(position);
}
/**
* @param posicion del item del que se solicita el id
* @return id del item situado en la posicin dada
*/
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Disposicion disposicion = this.disposiciones.get(position);
int posicionDisposicion = position + comienzaEn;
textoDisposicion = posicionDisposicion + ". " + disposicion.infoDisposicion();
return new DisposicionListView(this.context, textoDisposicion, disposicion.resumenSumario, numeroNotas(disposicion));
}
private int numeroNotas(Disposicion dis) {
NotasDbAdapter mDbHelper;
Cursor mCursorNotas;
mDbHelper = new NotasDbAdapter(context);
mDbHelper.open();
mCursorNotas = mDbHelper.fetchSelectedNotes(dis.getId());
Integer i = mCursorNotas.getCount();
mDbHelper.close();
return i;
}
/**
* Constructor de la vista
*/
private final class DisposicionListView extends LinearLayout {
private TextView infoDisposicion;
private TextView sumarioDisposicion;
private TextView numeroNotas;
public DisposicionListView(Context context, String infoDisposicion, String sumarioDisposicion, Integer numNotas) {
super(context);
setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(5, 3, 5, 0);
this.infoDisposicion = new TextView(context);
this.infoDisposicion.setText(infoDisposicion);
this.infoDisposicion.setTextSize(16);
this.infoDisposicion.setTextColor(Color.BLACK);
this.addView(this.infoDisposicion, params);
this.sumarioDisposicion = new TextView(context);
this.sumarioDisposicion.setText(" " + sumarioDisposicion);
this.sumarioDisposicion.setTextSize(16);
this.sumarioDisposicion.setTextColor(Color.WHITE);
this.addView(this.sumarioDisposicion, params);
if(numNotas != 0){
this.numeroNotas = new TextView(context);
this.numeroNotas.setText(numNotas.toString() + " notas");
this.numeroNotas.setTextSize(10);
this.numeroNotas.setTextColor(Color.RED);
this.addView(this.numeroNotas, params);
}
}
}
}
|