2011-10-30 17 views

Respuesta

19

Solo mire este ejemplo Android – Sectioned Headers in ListViews, describe muy bien cómo implementar los encabezados seccionados en ListViews.

Y

android-amazing-listview

Jeff Sharkey's SeparatedListAdapter

MergeAdapter by CommonsWare

Gracias.

+0

Gracias, ya he resolver este problema. – stream

+0

¿Alguno de estos enlaces ayuda a fijar una fila de encabezado en la parte superior de la pantalla a medida que el usuario se desplaza por las secciones? – topwik

+0

@towpse - Oye, ¿no entendí lo que quieres decir? – user370305

12

Crear una estructura de encabezado en la distribución de su lista de elementos. Usamos la opción VISIBILIDAD para mostrar y ocultar el DISPOSITIVO DE ENCABEZAMIENTO. Esto actuará como un encabezado de sección.

En el método de los adaptadores "getView", compruebe la primera letra del "campo de nombre (en el caso que está mostrando en Acuerdos con el nombre)" con la primera letra del "campo de nombre" LIST ITEMS anterior. Si oculta el HEADER LAYOUT (con una vista de texto) else, muestre el HEYER LAYOUT con el texto del encabezado mostrando la primera letra del campo Name.

Aquí está el código

cadena nameFirstLetter = "A"; // Declaro esto globalmente, no dentro de getView.

// Dentro del getView String nameF = Name.slice (0,1);

if(!nameFirstLetter.equals(nameF)){ 
     nameFirstLetter = nameF ;   
     holder.headerText.setText(nameFirstLetter); 
     holder.headerLayout.setVisibility(View.VISIBLE); 
    }else{ 
     holder.headerLayout.setVisibility(View.GONE); 
    } 

Este es el método más fácil para mostrar encabezado de sección en la vista Lista de Android, pero no lo puedo trabajar como sección de encabezado Iphone, es decir. El encabezado de la sección se oculta junto con otros elementos de la lista cuando nos desplazamos hacia arriba/abajo.

+0

Si se puede hacer clic en los elementos de la lista, esto hace que se pueda hacer clic en el encabezado. Especialmente con las ondas en el Android moderno, esto ahora es deslumbrantemente obvio para los usuarios. –

3

Si alguien necesita una solución diferente, especialmente las más utilizadas para el desarrollo de iOS, la prefiere o desea emular la apariencia de iOS; Yo recomiendo lo siguiente:

http://applidium.com/en/news/headerlistview_for_android/

La lógica es la misma que la de iOS, y hace la mayor parte de la pierna-trabajo por usted

+0

Si va a su repositorio github, el proyecto se ha marcado como desaprobado: https://github.com/applidium/HeaderListView – ThomasW

0

Usted puede tener una mirada en SectionedMergeAdapter. Si tiene varias sublistas de datos, puede unirlas y tener encabezados para ellas.

Código de ejemplo -

ListView listView = (ListView) findViewById(android.R.id.list); 

ArrayAdapter<Integer> adapter1 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList1); 
ArrayAdapter<Integer> adapter2 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList2); 
ArrayAdapter<Integer> adapter3 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList3); 

TextView tv1 = new TextView(this); 
tv1.setText("Header 1"); 
TextView tv2 = new TextView(this); 
tv2.setText("Header 2"); 
TextView tv3 = new TextView(this); 
tv3.setText("Header 3"); 

SectionedMergeAdapter adapter = new SectionedMergeAdapter(); 

adapter.addSection(new SectionedMergeAdapter.Section(tv1, adapter1)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv2, adapter2)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv3, adapter3)); 

listView.setAdapter(adapter); 
Cuestiones relacionadas