Cómo agregar un pie de página en ListView?


Estoy desarrollando una aplicación,En mi aplicación,estoy usando Listview para mostrar datos usando el análisis dom,quiero pie de página en listview,cuando hago clic en pie de página adicional más datos agregar a la vista de lista,adjunto imagen,me gustaría que el diseño y el proceso,por favor refiérase image1 e imgae2.Menciono pie de página en rectángulo rojo

Fig.1-Pie de página, como "Más Noticias"
texto alt

texto alt

Fig2-Añadir 10 registros adicionales añadidos en listview

Author: Aniket Thakur, 2010-11-24

5 answers

Cree un diseño de vista de pie de página que consiste en texto que desea establecer como pie de página y luego intente

View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);

El diseño para el pie de página podría ser algo como esto:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="7dip"
    android:paddingBottom="7dip"
    android:orientation="horizontal"
    android:gravity="center">

    <LinearLayout 
        android:id="@+id/footer_layout" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_gravity="center">

    <TextView 
        android:text="@string/footer_text_1" 
        android:id="@+id/footer_1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textSize="14dip" 
        android:textStyle="bold" 
        android:layout_marginRight="5dip" />
    </LinearLayout>
</LinearLayout> 

La clase de actividad podría ser:

public class MyListActivty extends ListActivity {
    private Context context = null;
    private ListView list = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        list = (ListView)findViewById(android.R.id.list);

        //code to set adapter to populate list
        View footerView =  ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
        list.addFooterView(footerView);
    }
}
 199
Author: Shaireen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-30 11:55:07

Sé que esta es una pregunta muy antigua, pero busqué en Google mi camino aquí y encontré que la respuesta proporcionada no es 100% satisfactoria, porque como mencionó gcl1, de esta manera el pie de página no es realmente un pie de página a la pantalla, es solo un "complemento" a la lista.

En pocas palabras - para otros que pueden buscar en Google su camino aquí-encontré la siguiente sugerencia aquí: Pie de página fijo y siempre visible debajo de ListFragment

Intente hacer lo siguiente, donde el énfasis está en el botón (o cualquier pie de página elemento) aparece primero en el XML - y luego la lista se añade como "layout_above":

<RelativeLayout>

<Button android:id="@+id/footer" android:layout_alignParentBottom="true"/> 
<ListView android:id="@android:id/list" **android:layout_above**="@id/footer"> <!-- the list -->

</RelativeLayout>
 9
Author: Ofer Lando,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:37

Las respuestas aquí están un poco desactualizadas. Aunque el código sigue siendo el mismo, hay algunos cambios en el comportamiento.

public class MyListActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false);
        getListView().addFooterView(footerView);
        setListAdapter(new ArrayAdapter<String>(this, getResources().getStringArray(R.array.news)));
    }
}

Información sobre addFooterView() método

Agregue una vista fija para que aparezca en la parte inferior de la lista. Si addFooterView() se llama más de una vez, las vistas aparecerán en el orden en que se agregaron. Las vistas agregadas usando esta llamada pueden enfocarse si lo desean.

La mayoría de las respuestas anteriores subrayan un punto muy importante -

addFooterView() debe ser llamado antes llamando a setAdapter().Esto es para que ListView pueda envolver el cursor suministrado con uno que también tenga en cuenta las vistas de encabezado y pie de página.

Desde Kitkat esto ha cambiado.

Nota: Cuando se introdujo por primera vez, este método solo se podía llamar antes de configurar el adaptador con setAdapter(ListAdapter). A partir de KITKAT, este método se puede llamar en cualquier momento. Si el adaptador de ListView no extiende HeaderViewListAdapter, se empaquetará con una instancia de soporte de WrapperListAdapter.

Documentación

 8
Author: Aniket Thakur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-17 16:05:14

Si el ListView es un hijo de la ListActivity:

getListView().addFooterView(
    getLayoutInflater().inflate(R.layout.footer_view, null)
);

(dentro de onCreate())

 5
Author: Andrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-14 16:17:26

La actividad en la que desea agregar listview pie de página y también tengo generar un evento en listview pie de página clic.

  public class MainActivity extends Activity
{

        @Override
        protected void onCreate(Bundle savedInstanceState)
         {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            ListView  list_of_f = (ListView) findViewById(R.id.list_of_f);

            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View view = inflater.inflate(R.layout.web_view, null);  // i have open a webview on the listview footer

            RelativeLayout  layoutFooter = (RelativeLayout) view.findViewById(R.id.layoutFooter);

            list_of_f.addFooterView(view);

        }

}

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg" >

    <ImageView
        android:id="@+id/dept_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/dept_nav" />

    <ListView
        android:id="@+id/list_of_f"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/dept_nav"
        android:layout_margin="5dp"
        android:layout_marginTop="10dp"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:listSelector="@android:color/transparent" >
    </ListView>

</RelativeLayout>
 2
Author: Xar E Ahmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-14 06:05:53