Adición de encabezado en ListView en android

Necesito añadir cabecera en mi listview y el encabezado siempre debe mostrarse incluso la lista de desplazamiento.

¿Es posible en la vista de lista de android?

La solución que funciona para mí es crear un TableLayout que tiene una fila con el encabezado y una fila con la lista como esta:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/header" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent"/> </TableLayout> 

Asegúrese de que ListView tenga @android: id / list como ID.

Puede agregar el encabezado en la vista de lista de la siguiente manera:

 View headerView = ((LayoutInflater)Activity.this.getSystemService(Activity.this.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.header, null, false); list.addHeaderView(headerView) 

Sí, he aquí lo que he hecho:

escaparate

Para un diseño personalizado con ListActivity o ListFragment , su diseño debe contener un ListView con el atributo android:id establecido en @android:id/list .

1) main_layout.xml :

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > // custom Headers <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="center" android:text="@string/systolic" /> <TextView android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="center" android:text="@string/diastolic" /> <TextView android:id="@+id/textView3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="center" android:text="@string/date" /> </LinearLayout> // This is important to be exactly like below ,android:id="@android:id/list" <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/linearLayout1" > </ListView> </RelativeLayout> 

Para el diseño personalizado para cada fila de lista,

2) custom_list_row.xml :

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/bpSysHolder" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:layout_gravity="center_vertical" android:text="TextView" > </TextView> <TextView android:id="@+id/bpDiaHolder" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:layout_gravity="center_vertical" android:text="TextView" > </TextView> <TextView android:id="@+id/bpDtHolder" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:layout_gravity="center_vertical" android:text="TextView" > </TextView> </LinearLayout> 

3) ListActivity :

 public class HistoryActivity extends ListActivity { private SimpleCursorAdapter dbAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // this is neccessery for you setContentView(R.layout.main_layout); dao = new BpDAO(this); Cursor bpList = dao.fetchAll_bp(); String[] from = new String[] { BpDAO.bp_SYS, BpDAO.bp_DIA, BpDAO.bp_DT }; int[] target = new int[] { R.id.bpSysHolder, R.id.bpDiaHolder, R.id.bpDtHolder }; // And this for custom row layout for each list row dbAdapter = new SimpleCursorAdapter(this, R.layout.custom_list_row, bpList, from, target); setListAdapter(dbAdapter); } @Override protected void onDestroy() { super.onDestroy(); dao.close(); } @Override public void onListItemClick(ListView l, View view, int position, long id) { // TODO something on item click } } 

En caso de que lo necesite comprobar: " Adjuntar un pegajoso (fijo) encabezado / pie de página a un listview "

Haz una cosa. Coloque un TextView justo encima de la vista de lista y establezca el texto como su cabecera. Logrará su necesidad.

  • ¿Cómo puedo utilizar el botón OnClick en ListView personalizado con View Holder
  • Deslizar Actualizar diseño enRefresh trabajando pero no mostrando el indicador de actualización
  • Cambio de datos del adaptador ListView sin notificación de ListView
  • ArrayAdapter de Android: agrega lista de cadenas en lugar de reemplazar
  • Uso de Android SimpleCursorAdapter y CursorLoader
  • Mostrar / ocultar la vista de lista
  • Interacción de ExpandableListAdapter.getChildView () con AbsListView.LayoutParams
  • ¿Cómo configurar el adaptador en caso de múltiples vistas de texto por lista?
  • Android: ¿Para establecer un elemento como seleccionado cuando se abre ListView?
  • El mejor método para agregar continuamente nuevos datos a listview
  • La vista de lista con zoom no se desplaza
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.