Actualmente tengo una clase que extiende la clase ListActivity. Necesito poder agregar algunos botones estáticos sobre la lista que están siempre visibles. Intenté tomar el ListView usando getListView() desde dentro de la clase. Luego utilicé addHeaderView (Ver) para agregar un pequeño diseño a la parte superior de la pantalla.Android: Agregar encabezado estático al principio de una ListActivity
Header.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/testButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Income"
android:textSize="15dip"
android:layout_weight="1" />
</LinearLayout>
Antes de que yo puse el adaptador que hago:
ListView lv = getListView();
lv.addHeaderView(findViewById(R.layout.header));
Esto se traduce en nada pasando a ListView a excepción de que se rellena a partir de mi base de datos. No aparecen botones arriba.
Otro enfoque lo intenté como agregar relleno a la parte superior de ListView. Cuando hice esto, se movió con éxito hacia abajo, sin embargo, si agregué alguno encima, presionó el ListView. No importa lo que haga, parece que no puedo poner unos botones encima de ListView cuando uso ListActivity.
Gracias de antemano.
synic, He intentado con anticipación. Lo intenté de nuevo solo por el bien de la cordura, y el botón no se mostró. A continuación se muestra el archivo de diseño de la actividad y el código que he implementado en oncreate().
// Mi ListActivity estoy tratando de agregar el encabezado de
public class AuditActivity extends ListActivity {
Budget budget;
@Override
public void onCreate(Bundle savedInstanceState) {
Cursor test;
super.onCreate(savedInstanceState);
setContentView(R.layout.audit);
ListView lv = getListView();
LayoutInflater infalter = getLayoutInflater();
ViewGroup header = (ViewGroup) infalter.inflate(R.layout.header, lv, false);
lv.addHeaderView(header);
budget = new Budget(this);
/*
try {
test = budget.getTransactions();
showEvents(test);
} finally {
}
*/
// switchTabSpecial();
}
layout.xml para la actividad:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ListView android:id="@android:id/list" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@android:id/empty" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/empty" />
</LinearLayout>
No creo que necesita para asignar y echo la cabecera inflado a una ViewGroup. ViewGroup extiende View, y el método addHeaderView de ListView acepta cualquier objeto View. –
@Glenn Bech iam estoy de acuerdo con tu declaración –
Perfecto, +1! Solo un comentario adicional: asegúrese de configurar el adaptador de lista ** después de ** agregar la vista de encabezado. Agregar el adaptador antes del encabezado me dio una excepción de tiempo de ejecución "No se puede agregar la vista de encabezado a la lista - setAdapter como ya se ha llamado" – Addi