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

Resuelto JohnNick asked hace 54 años • 8 respuestas

Estoy desarrollando una aplicación, en mi aplicación, estoy usando Listview para mostrar datos usando el análisis dom, quiero un pie de página en la vista de lista, cuando hago clic en el pie de página, se agregan más datos a la vista de lista, adjunté una imagen, me gustaría ese diseño y proceso, consulte la imagen 1 y la imgae2. Menciono el pie de página en un rectángulo rojo

Fig1-Pie de página como "Más noticias"
texto alternativo

texto alternativo

Fig2: Agregar 10 registros adicionales agregados en la vista de lista

JohnNick avatar Jan 01 '70 08:01 JohnNick
Aceptado

Cree un diseño de vista de pie de página que consista en texto que desee 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 del 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);
    }
}
Shaireen avatar Nov 24 '2010 09:11 Shaireen

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()el método

Agregue una vista fija para que aparezca al final de la lista. Si addFooterView()se llama más de una vez, las vistas aparecerán en el orden en que fueron agregadas. Las vistas agregadas mediante esta llamada pueden enfocarse si así lo desean.

La mayoría de las respuestas anteriores enfatizan un punto muy importante:

addFooterView()debe llamarse antes de llamar setAdapter(). Esto es para que ListView pueda ajustar el cursor proporcionado con uno que también tenga en cuenta las vistas de encabezado y pie de página.

A partir de 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

Aniket Thakur avatar Mar 17 '2015 16:03 Aniket Thakur

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

En pocas palabras, para otros que puedan buscar en Google hasta 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 elemento de pie de página) que aparece primero en el XML, y luego la lista se agrega 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>
Ofer Lando avatar Dec 17 '2013 12:12 Ofer Lando

Si ListView es hijo de ListActivity:

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

(dentro de onCreate())

Andrew avatar Jan 30 '2015 22:01 Andrew

La actividad en la que desea agregar el pie de página de la vista de lista y también generé un evento al hacer clic en el pie de página de la vista de lista.

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

        }

}

actividad_principal.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>
Zar E Ahmer avatar Apr 15 '2014 10:04 Zar E Ahmer