lunes, 31 de agosto de 2009

Failed To establish connection to localhost + Postgres + C#

Hace poco me tope con este problema cuando trabajaba en mono developer... dado que reinstale y en ubuntu 9.04 me funcionaba bien no tenia por que dejar de funcionar ahora que estaba en Mandriva 2009.1, pero resulto que si y me dio un fatal

"Failed To establish connection to localhost"

Lo cual no entendi que era por que alfin y al cabo desde consola ingrsaba bien con:

>psql -U usuario -W
>password: ************

Pero bueno despues de unos 4-5 min me tope con la respuesta en HoldemManager aparentemente es un problema comun y resulta cuando no puede resolver localhost a la direccion loopback asi que si cambio el parametro

Host="localhost" por Host="127.0.0.1"

Funciona de maravilla!, ahora a seguir trabajando

viernes, 28 de agosto de 2009

CustomExpandableListAdapter con HashMap y List

Los Adapter en Android son estas clases especiales se usan como vinculos para las vistas, proveyendo un acceso a la informacion, en palabras simples "este tipo le dice que poner a las vistas"..... existen toda clase de Adapter en Android:

ArrrayAdapter
CursorAdapter
ListAdapter
SimpleCursorAdapter

Mas Info en esta.... URL

Ahora los que nos compete es hablar sobre como crear nuestra propia clase CustomExpandableListAdater que tenga como parametro un HashMap> y que cree los grupos e hijos a partir de esto...

Lo primero es crear nuestra clase que herede de BaseExpandableListAdapter y colocarle nuestros objetos miembros y un constructor que reciba como parametro el contexto y el hashmap se vera asi:



Hasta ahi se ve bien pero como heredamos de BaseExpandableListAdapter tenemos que implementar los siguientes metodos abstractos:

getChild(int groupPosition, int childPosition)
getChildId(int groupPosition, int childPosition)
getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
getChildrenCount(int groupPosition)
getGroup(int groupPosition)
getGroupCount()
getGroupId(int groupPosition)
getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
hasStableIds()
isChildSelectable(int groupPosition, int childPosition)

Todos de la interface android.widget.ExpandableListAdapter.

Para la implementacion de ellos lo veremos por orden:



El ultimo metodo getMapGroup(int position) , es un metodo muy util que nos permite obtener a partir de una posicion en el grupo el grupo asociado, dado que es un Objeto de tipo Map entonces tiene asociado valores y no posiciones asi que este traduce la posicion en un valor en el HashMap.
Luego sobreescribimos el metodo getChild(int groupPosition, int childPosition), y a partir de la posicion obtenemos el grupo con el getMapGroup(int position) asi con el grupo obtenemos la lista y con la posicion de la lista el objeto asociado:
 T value=mapList.get(getMapGroup(groupPosition)).get(childPosition);
Lo almacenamos en value y lo devolvemos.

Ahora este metodo que fue sacado de el ejemplo de ExpandableListView1.java de android developers:



Lo que hace es crear el view ha desplegarse en nuestro ExpandableListView al que el adapter va estar asociado. Por lo tanto como queremos que sean Textview entonces se crea con su respectivo layout. Este metodo es usado al momento de crear las vistas:



Ya lo ven se llama genericView para crear las vistas.

Luego algunos metodos que son bastantes compresibles sin extensa explicacion, simplemente con la declaracion podemos darnos cuenta:



Al final solo sobreescribimos estos metodos para especificar si los objetos tienen Ids y si son seleccionables los childs deacuerdo a la posicion



Y eso es todo ahora para que nuestro adapter se ajusta a nuestra lista simplemente




Hasta la proxima