Android: Wie erstelle ich einen Listview-Bildschirm mit unterschiedlichen Inhalten für jede Zeile
Frage
Ich suche eine Listenansicht Bildschirm ähnlich den Klangeinstellung Bildschirm (im eingebauten App Einstellungen, siehe Bild unten) zu erzeugen, dh ich mag einige Zeilen Text + Kontrollkästchen, andere Zeilen müssen Text + „pop haben up“Tasten, sollten einige Zeilen Text nur etc haben.
Was ist der beste Weg, dies zu erreichen?
Lösung
Das ist keine Listenansicht, dass ein PreferenceActivity
ist. Werfen Sie einen Blick auf die PrefereceActivity Klasse
http://developer.android.com/reference/android/preference/ PreferenceActivity.html
Wenn Sie wirklich eine andere Ansicht für jede Zeile in einer Listenansicht haben wollen (das ist sehr gültig ist), müssen Sie Ihre eigene Klasse erstellen, die BaseAdapter
erstreckt. Im getView()
Verfahren kehren nur die Ansicht, die Sie anzeigen möchten. Es gibt viele Beispiele online.
Andere Tipps
Wie bereits von Falmarri heraus, dass kein ListView
ist aber ein PreferenceActivity
.
Wenn Sie nicht mit dem PreferenceActivity
arbeiten können, der einfachste Weg, um eine Liste der verschiedenen Elemente zu machen, bewegen, wenn sie den Bildschirm heraus wachsen, ist eine ScrollView
um einen LinearLayout
zu platzieren. Sie können mehr darüber lesen Sie hier: http://developer.android.com/reference /android/widget/ScrollView.html
Im Folgenden ist ein sehr einfaches Beispiel:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="Some text label here"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:text="A button to click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Perhaps an input field here"
/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="Some more text, and a check box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
</LinearLayout>
</ScrollView>
Nun ist diese Liste enthält nicht genügend Elemente zu blättern, aber wenn Sie halten mehr Elemente ihm hinzufügen wird es sofort aufnehmen blättern, wie es wird größer als der Bildschirm ist.