2012-05-10 11 views
5

Quiero crear una página que tenga 3 listas y 3 encabezados, pero no quiero desplazarlos de forma independiente, quiero que se desplace toda la página. ¿Alguien sabe cómo podría lograr esto?Android múltiples vistas de lista que no se desplazan independientemente

Básicamente quiero que se vea como esto:

header 
smlheader 
list 
smlheader 
list 
smlheader 
list 

Con este código he tratado de lograrlo, pero no es tan bueno.

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/white"> 

    <include layout="@layout/header" /> 
    <include layout="@layout/redcell" /> 

    <TableRow 

     android:id="@+id/tableRow1" 
     android:layout_width="wrap_content" 
     android:layout_height="60dp" > 


     <TextView 

     android:id="@+id/fixtures_text" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 

     android:gravity="center" 
     android:text="@string/leagues" 
     android:textColor="@color/white" 
     android:textSize="25dp" 
     android:textStyle="bold"/> 




    </TableRow> 

    <include layout="@layout/redcell" /> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="wrap_content" 
     android:layout_height="60dp" > 


     <TextView 

     android:id="@+id/results_text" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 

     android:gravity="center" 
     android:text="@string/leagues" 
     android:textColor="@color/white" 
     android:textSize="25dp" 
     android:textStyle="bold"/> 

    </TableRow> 

    <include layout="@layout/redcell" /> 


    <ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</TableLayout> 
<ScrollView/> 
+2

Tome un vistazo a esta respuesta: http: // stackoverflow.com/a/1967010/1321873 – Rajesh

+1

No tengo claro qué es lo que quieres ... ¿quieres tres listas una al lado de la otra que se desplacen juntas, o tres listas que son ar rango vertical pero desplazarse como una lista? – Barak

+0

¿Qué has probado? Sin ver el código que ha usado, no podemos ayudarlo. – slayton

Respuesta

13

me gustaría probar CommonsWare MergeAdapter como apuntado por Rajesh. Parece exactamente lo que necesitas.

Tomará múltiples vistas (incluyendo listviews) y las juntará, luego configure el adaptador de combinación en una vista de lista y listo, tiene varias vistas de lista en una.

Citando de la documentación para ello:

MergeAdapter acepta una mezcla de los adaptadores y las opiniones y los presenta como un todo lo que sea contigua a ListView se vierte en. Esto es bueno para casos en los que tiene múltiples fuentes de datos, o si tiene un puñado de vistas comunes para mezclar con listas de datos, o similares.

Simplemente cree un MergeAdapter y llame a addAdapter(), addView(), o addViews() (aceptando una Lista), luego conecte su adaptador al ListView.

EDITAR

1) Descargar la .jar de here
2) Descargar el .jar para CWAC SackOfViewsAdapter como el MergeAdapter lo requiere.
2) Cree un directorio en su proyecto llamado "libs" (en el mismo nivel que src & res)
3) coloque ambos archivos .jar en esa carpeta (Eclipse debería tomar las cosas desde allí en cuanto a configuración para ser incluido en la construcción)
4) Usar el MergeAdapter según las instrucciones del primer enlace en mi respuesta original.

ejemplo Pseudo-código:

myMergeAdapter = new MergeAdapter(); 
myMergeAdapter.addView(HeaderView); 
myMergeAdapter.addView(SmallHeaderView1); 
myMergeAdapter.addAdapter(listAdapter1); 
myMergeAdapter.addView(SmallHeaderView2); 
myMergeAdapter.addAdapter(listAdapter2); 
myMergeAdapter.addView(SmallHeaderView3); 
myMergeAdapter.addAdapter(listAdapter3); 

setListAdapter(myMergeAdapter); 

EDIT 2

Agregando su cabecera, que es un diseño completo:

View Header = getLayoutInflater.inflate(R.layout.red_cell); 
myMergeAdapter.addView(Header); 
+0

sí, este sonido es correcto, pero ¿cómo implemento esto en mi ¿código? – iamlukeyb

+0

muchas gracias – iamlukeyb

+0

también necesito cambiar el archivo de diseño.tengo un archivo de diseño llamado glóbulo rojo que es solo una barra roja con una vista de texto, eso es lo que quiero usar como encabezado xml, ¿cómo puedo llamarlo desde mi carpeta de diseño para encajar con un mergeAdapter – iamlukeyb

Cuestiones relacionadas