DisposicionAdapter.java :  » Media » pfcjcmp » es » uva » pfc » jcmp » Android Open Source

Android Open Source » Media » pfcjcmp 
pfcjcmp » es » uva » pfc » jcmp » DisposicionAdapter.java
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);
             }
          }
      }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.