2012-09-18 23 views
33

estoy añadiendo una vista de pie de página y encabezado a un ListView mediante el uso de los métodos y setHeaderView()setFooterView() y una ViewInflater. Eso funciona bastante bien.Cómo hacer que el encabezado o pie de página de un ListView no se puede hacer clic

Pero, ¿cómo podría evitar que la vista de encabezado o pie de página desencadene eventos onListItemClick? Por supuesto, puedo ver el evento y verificar si proviene de un encabezado o pie de página, pero esto solo resuelve una parte del problema, ya que el encabezado y el pie de página se enfocaron aún más cuando se hizo clic.

Respuesta

63

Simplemente use el ListView#addHeaderView(View v, Object data, boolean isSelectable); y el método addFooter() correspondiente.


El propósito de Object data parámetro.

El código fuente ListView describe los data parámetro como:

Los datos respaldan la vista. Esto se devuelve de ListAdapter # getItem (int).

Lo que significa que si uso listView.getAdapter().getItem(0); devolverá el data objeto de nuestra cabecera.


voy a elaborar esto con un ejemplo:

listView = (ListView) findViewById(R.id.list); 
String[] array = new String[] {"one", "two", "three"}; 
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array); 

A continuación vamos a añadir una cabecera y configurar el adaptador:

listView.addHeaderView(view, "Potato", false); 
listView.setAdapter(adapter); 

tarde si nos preguntamos:

Log.v("ListAdapter", listView.getAdapter().getItem(0)); // output: "Potato" 
Log.v("ArrayAdapter", adapter.getItem(0));    // output: "one" 
+2

¡Ah genial! Funciona. Una pregunta más ¿para qué sirve el objeto de datos? Por el momento, configuré el parámetro de datos en nulo. Pero cuando le pasaba un objeto real, ¿qué le sucede? – Flo

+0

En este momento no sé, estoy leyendo el código fuente y buscando en línea para ver cómo funciona. ¡Publicaré una actualización si lo resuelvo! – Sam

+0

Funciona. Ahorro mucho tiempo. – Anukool

Cuestiones relacionadas