Android: ¿cómo puedo crear una pantalla de vista de lista con diferentes contenidos para cada fila
Pregunta
Estoy buscando para crear una pantalla de vista de lista similar a la pantalla de ajuste de sonido (en la aplicación construida en Configuración, ver imagen abajo), es decir, quiero algunas filas tengan casillas de verificación de texto +, otras filas para que el texto + "pop arriba" botones, algunas filas deben tener sólo texto, etc.
¿Cuál es la mejor manera de lograr esto?
Solución
Esto no es una vista de lista, eso es un PreferenceActivity
. Echar un vistazo a la clase PrefereceActivity
http://developer.android.com/reference/android/preference/ PreferenceActivity.html
Si realmente quiere tener una visión diferente para cada fila en una vista de lista (que es muy válida), usted tiene que crear su propia clase que se extiende BaseAdapter
. En el método getView()
, simplemente devolver la vista que desee mostrar. Hay un montón de ejemplos en línea.
Otros consejos
Como se ha señalado por Falmarri, que no es un ListView
sino un PreferenceActivity
.
Si no puede trabajar con el PreferenceActivity
, la forma más sencilla de hacer una lista de los diferentes elementos que se desplazará si fuera crecen la pantalla, es colocar una ScrollView
alrededor de un LinearLayout
. Puede leer más sobre esto aquí: http://developer.android.com/reference /android/widget/ScrollView.html
A continuación se muestra un ejemplo muy sencillo:
<?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>
Ahora bien, esta lista no contiene suficientes elementos para desplazarse, pero si se mantiene la adición de más elementos a él comenzará a desplazarse tan pronto como se pone más grande que la pantalla.