/ / Android - ListActivity, Kopf- und Fußzeilenansicht hinzufügen - Android, Kopfzeile, Fußzeile, Listenaktivität

Android - ListActivity, Kopf- und Fußzeilenansicht hinzufügen - Android, Header, Fußzeile, Listenaktivität

Ich benutze ListActivity, listview.

listView = getListView();

funktioniert einfach perfekt. Ich habe die Fußzeilenansicht als hinzugefügt

LayoutInflater inflater = getLayoutInflater();
listView.addFooterView( inflater.inflate( R.layout.footer, null ), null, false);

und alles war glänzend, aber hässlich, also wollte ich diese Fußzeilenansicht (die nur einen editierten Text und nur eine Schaltfläche enthält) zum Header von listView hinzufügen

LayoutInflater inflater = getLayoutInflater();
listView.addHeaderView( inflater.inflate( R.layout.footer, null ), null, false);

und plötzlich läuft alles schief und ich bekomme sofort RuntimeException.

Suspended(exception RuntimeException)
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent)
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent)
ActivityThread.access$2200(ActivityThread, Activity$ActiviyRecord, Intent),
so on..

Warum wird eine Ausnahme ausgelöst? Was unterscheidet AddFooterView und AddHeaderView und wie kann ich Header zu ListActivity hinzufügen?

AKTUALISIEREN

Wie du in den Kommentaren lesen kannst, funktioniert mein Logcat immer noch nicht, aber ich habe gerade in diesem Moment versucht:

} catch(Exception e){
Writer result = new StringWriter();
PrintWriter printWriter = new PrintWriter(result);
e.printStackTrace(printWriter);
String error = result.toString();
}

und danach setze ich einen Haltepunkt, und ich kann Fehler in Ausdrücke Abschnitt lesen. es sagte :

java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.

es war für uns alle lehrreich. Nach dem Ändern von Befehlen funktioniert es perfected.

Antworten:

11 für die Antwort № 1

Während du dich anmeldest

java.lang.IllegalStateException: Die Header-Ansicht kann nicht zur Liste hinzugefügt werden - setAdapter wurde bereits aufgerufen.

Listview "s Methode addHeaderView oder addFooterView muss vorher angerufen werden setAdapter.


0 für die Antwort № 2

Erstellen Sie Layout-XML für Kopf- und Fußzeile

header_layout.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="header"
/>
</RelativeLayout>

footer_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="footer"
/>
</RelativeLayout>

Jetzt in Aktivität Java-Datei onCreate () -Methode hinzufügen

listView = (ListView) findViewById(R.id.listView1);
LayoutInflater inflater = getLayoutInflater();
ViewGroup header = (ViewGroup) inflater.inflate(R.layout.header, listView,
false);
ViewGroup footer = (ViewGroup) inflater.inflate(R.layout.footer, listView,
false);
listView.addHeaderView(header, null, false);
listView.addFooterView(footer, null, false);
listView.setAdapter(adapter);

-6 für die Antwort № 3

Wenn Sie Ihrer ListView eine Header-Ansicht hinzufügen möchten, sollten Sie dies vor der Verwendung von setListAdapter () streng tun, da andernfalls eine IllegalStateException ausgelöst wird.