Voy a agregar un pie de página y el encabezado de la vista a un ListView por el uso de los métodos setHeaderView() y setFooterView() y un ViewInflater. Que funciona bastante bien.

Pero ¿cómo podía evitar que el encabezado o pie de página de vista de disparo onListItemClick eventos? Por supuesto que puedo capturar el evento y comprobar si vino de un encabezado o pie de página, pero esto sólo resuelve una parte del problema, como el encabezado y el pie de página tienes todavía la atención cuando se hace clic.

InformationsquelleAutor Flo | 2012-09-18

1 Comentario

  1. 65

    Simplemente utilizar el ListView#addHeaderView(Ver v, datos de Objeto, boolean isSelectable);
    , y la coincidencia de addFooter() método.


    El propósito de Object data parámetro.

    El ListView código fuente describe la data de parámetros como:

    Los datos de copia de la vista. Este es devuelto desde ListAdapter#getItem(int).

    Lo cual significa que si yo uso listView.getAdapter().getItem(0); devolverá el data Objeto de nuestro encabezado.


    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);

    Siguiente vamos a agregar un encabezado y configurar el adaptador:

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

    Más tarde si nos preguntamos:

    Log.v("ListAdapter", listView.getAdapter().getItem(0));  //output: "Potato" 
    Log.v("ArrayAdapter", adapter.getItem(0));               //output: "one"
    • Ah genial! Funciona. Una pregunta más ¿cuál es el objeto de datos? En el momento que establezca el parámetro de datos a null. Pero cuando iba a pasar de un objeto real que es lo que pasa?
    • Ahora mismo no sé, estoy leyendo el código fuente y buscando en línea para ver cómo funciona. Voy a publicar una actualización si lo de averiguar!

Dejar respuesta

Please enter your comment!
Please enter your name here