Android: как создать экран просмотра списка с различным содержанием для каждой строки
Я пытаюсь создать экран просмотра списка, аналогичный экрану "Настройка звука" (во встроенном приложении "Настройки", см. Изображение ниже), т.е. я хочу, чтобы в некоторых строках были текст + флажки, в других строках - текст + "всплывающие" кнопки некоторые строки должны иметь только текст и т. д.
Каков наилучший способ сделать это?
2 ответа
Это не просмотр списка, это PreferenceActivity
, Взгляните на класс PrefereceActivity
http://developer.android.com/reference/android/preference/PreferenceActivity.html
Если вы действительно хотите иметь разные представления для каждой строки в представлении списка (что очень правильно), вам придется создать свой собственный класс, который расширяет BaseAdapter
, в getView()
метод, просто верните вид, который вы хотите показать. Есть много примеров в Интернете.
Как указывает Фальмарри, это не ListView
но PreferenceActivity
,
Если вы не можете работать с PreferenceActivity
Самый простой способ составить список различных элементов, которые будут прокручиваться, если они перерастут экран, - это разместить ScrollView
вокруг LinearLayout
, Вы можете прочитать больше об этом здесь: http://developer.android.com/reference/android/widget/ScrollView.html
Ниже приведен очень простой пример:
<?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>
Теперь этот список не содержит достаточно элементов для прокрутки, но если вы продолжите добавлять к нему больше элементов, он начнет прокручиваться, как только он станет больше экрана.