«

»

oct 26 2011

Nuestro ListActivity usando Android Dataframework

Y con esto ponermos la guinda al pastel, el tercer y ultimo de los posts dedicados a Android DataFramework. Una libreria que para el que aun no nos haya leido es creacion de Javielinux creador de tweettopics y que sin duda nos facilitara mucho la vida a la hora de implementar nuestros proyectos y tratar con base de datos.

A continuación vamos a poner un ejemplo de como crear un ListActitivy con los datos almacenados en una base de datos usando Android DataFramework:

Nota: Para la realizacion de este tutorial se da por sentando conocimientos acerca de Lists, Adapter y ListActivity.
 

Código de la actividad

La actividad principal es muy sencilla y sólo tenemos que crear una instancia de nuestro adaptardor (RowEjemploAdapter) y establecerlo a nuestro ListActivity. Desde onListItemClick mostraremos el identificador de la categoría seleccionada:

 

public class Ejemplo extends ListActivity {

private RowEjemploAdapter adapter;

     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
            DataFramework.getInstance().open(this, "com.tu.paquete");
        } catch (Exception e) {
            e.printStackTrace();
        }

        setContentView(R.layout.main);

        adapter = new RowEjemploAdapter(this, DataFramework.getInstance().getEntityList("categories"));

        setListAdapter(adapter);
     }

     @Override
     protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);                              
        Toast.makeText(this, "Id: " + adapter.getItem(position).getId(), Toast.LENGTH_LONG).show();
     }

     @Override
     protected void onDestroy() {
        super.onDestroy();
        DataFramework.getInstance().close();
     }
}

 

Código del adaptador

En nuestro adaptador guardaremos los datos como una lista de Entity para poder acceder a toda la información de los registros de la base de datos:

 

public class RowEjemploAdapter extends BaseAdapter {

    private Context mContext;
    private List<Entity> elements;

    public RowEjemploAdapter (Context mContext, List<Entity> elements) {
        this.mContext = mContext;
        this.elements = elements;
    }

    public int getCount() {
        return elements.size();
    }

    public Entity getItem(int position) {
        return (Entity)elements.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        Entity item = elements.get(position);

        View v = View.inflate(mContext, R.layout.row, null);

        TextView lTitle = (TextView)v.findViewById(R.id.name);
        lTitle.setText(item.getString("name"));

        return v;
    }
}

 

Código de los layouts

Tanto estos xml como el codigo del adapter son meros ejemplos y en cada caso particular deberemos adaptarnos a la peculiaridad de nuestro caso.

 
Main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
    <ListView
       android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@id/android:list"/>
    <TextView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@id/android:empty"
   android:text="@string/no_items"
   android:gravity="center_vertical|center_horizontal" />
</RelativeLayout>

 
row.xml

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="vertical">

    <TextView android:layout_height="wrap_content" android:layout_width="wrap_content"
       android:text="nombre" android:id="@+id/name"/>

</LinearLayout>

 
 

Y con esto hemos terminado con Android Dataframework, pero no queriamos despedirnos sin agradecer el trabajo a Javielinux, no solo por el trabajo de la libreria si no por su wiki en GitHub de donde hemos extraido estos tutoriales.

 
fuente | https://github.com/javipacheco/Android-DataFramework
web del autor | El blog de Javielinux

Libreria | Descarga
 

Acerca del autor

JMPergar

Mobile Developer at @BeRepublic & Founder of @AndroCode. Silver Speaker & Member of Core Team at @GDGBarcelona.