2010-02-16 6 views
22

Extrayendo una lista de objetos del producto de una llamada a la base de datos y quiero construir un ListView de los datos en mi actividad con un encabezado y un pie de página sin desplazamiento. Cada fila consistirá en una miniatura del producto, algunos datos y un botón dispuesto horizontalmente. Entiendo que al usar ListView puedo inflar cada fila usando un diseño separado.Lista compleja ¿Ver ejemplo con datos complejos y diseño complejo de cada fila?

La mayoría de los ejemplos que he visto con ListView solo muestran una serie simple de cadenas que llenan toda la vista de la actividad, pero la mayoría de ejemplos del mundo real serán más complejos y no encuentro ejemplos que expliquen cómo todas estas piezas encajan juntas.

¿Alguien tiene alguna sugerencia para muestrear el código con una buena explicación?

Respuesta

3

La manera más fácil de tener una fila compleja en un ListView es a través de un SimpleAdapter. Hay varios ejemplos para eso.

para forzar el ListView para llenar la parte restante de la pantalla, establezca las propiedades como sigue:

Utilice un LinearLayout.

En la vista de lista:

android:layout_height="fill_parent", 
android:height="0dp", 
android:layout_weight="1" 

En todos los otros widgets:

android:layout_height="wrap_content" 

no establece una altura o layout_weight

+0

Otro ejemplo que tampoco muestra el diseño principal XML. Normalmente, una aplicación tendrá un encabezado, una lista de elementos y tal vez algunos widgets más cerca de la parte inferior. No estoy seguro de cómo los widgets inferiores se quedan en la parte inferior y no se apoderan del padre completo. Quiero que la vista de lista se expanda para llenar el espacio entre los widgets de encabezado y pie de página, pero después de eso debería simplemente desplazarse sin afectarlos. – Eno

+0

Me perdí esa parte de la pregunta, ver ediciones. –

+0

el enlace no funciona, verifique su enlace. – Deepak

6
private static class CustomCursorAdapter extends CursorAdapter { 

    protected ListView mListView; 

    protected static class RowViewHolder { 
     public TextView mTitle; 
     public TextView mText; 
    } 

    public CustomCursorAdapter(Activity activity) { 
     super(); 
     mListView = activity.getListView(); 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     // do what you need to do 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     View view = View.inflate(context, R.layout.row_layout, null); 

     RowViewHolder holder = new RowViewHolder(); 
     holder.mTitle = (TextView) view.findViewById(R.id.Title); 
     holder.mText = (TextView) view.findViewById(R.id.Text); 

     holder.mTitle.setOnClickListener(mOnTitleClickListener); 
     holder.mText.setOnClickListener(mOnTextClickListener); 

     view.setTag(holder); 

     return view; 
    } 
} 
Cuestiones relacionadas