¿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 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"
Fig2: Agregar 10 registros adicionales agregados en la vista de lista
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);
}
}
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 llamarsetAdapter()
. 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
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>
Si ListView es hijo de ListActivity:
getListView().addFooterView(
getLayoutInflater().inflate(R.layout.footer_view, null)
);
(dentro de onCreate())
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>