2012-01-25 15 views
19

Hay una maqueta debajo que probablemente explica mejor que las palabras. Básicamente, quiero una lista en la que el usuario pueda agregar/eliminar elementos dinámicamente y cada elemento tenga una pantalla de configuración configurable.¿Cómo puedo crear dinámicamente una preferencia de Android?

Así que hay dos claves aquí:

  1. Adición a la pantalla principal preferencias
  2. Inicio de una activityForResult cuando se pulsa un elemento. Esta actividad mostrará otra vista de preferencias (controles deslizantes, casillas de verificación, etc.) donde el usuario puede manipular estos y luego devolver los nuevos valores para ser almacenados en una estructura de datos.

Image:
http://i.stack.imgur.com/eZsfh.png

+0

¿Podría aclarar cómo debería funcionar? Por ejemplo, si el usuario presiona "Agregar elemento", ¿qué debe suceder? – Mel

+0

Puede intentar usar una base de datos: las filas principales son las "otras preferencias", mientras que las filas secundarias son las sentadas de esa preferencia. – Andreas

Respuesta

-2

Realmente es fácil crear las pantallas de preferencias dinámicamente. Puede hacerlo en código (busque en la aplicación de ejemplo Demos de API para PreferenceFromCode.java) o al expandir un archivo XML que puede escribir (PreferencesFromXml.java). Lo que va a ser difícil es crear una interfaz de usuario (UI) y almacenamiento para el usuario para componer y almacenar estas colecciones de preferencias dinámicas.

+13

Es bueno saber que es fácil: sería bueno si realmente respondieras en lugar de decir "Mira a otro lado". Incluso una URL hubiera sido mejor. –

+0

Parece que la aplicación de muestra que ha especificado ya no está disponible. – SOFe

1

Yo sugeriría dirigirse por el camino de Fragmentos - específicamente PreferenceFragment: http://developer.android.com/reference/android/preference/PreferenceFragment.html

Por qué creo que esto va a funcionar bien para usted:

Además , las preferencias mostradas seguirán el estilo visual de las preferencias del sistema . Es fácil crear una jerarquía de preferencias (que se puede mostrar en pantallas múltiples) a través de XML. Por estos motivos, se recomienda utilizar este fragmento (como una superclase) para tratar las preferencias de en las aplicaciones.

1

Su pregunta es un poco vaga, pero probablemente esto se solucione mejor almacenando los datos del usuario en una base de datos (y usando instancias estándar CursorAdapter y CursorLoader para mostrar estos datos al usuario) en lugar de intentar forzar todo en el Marco de preferencias. El CursorAdapter está optimizado para tratar conjuntos de resultados arbitrariamente grandes, mientras que PreferenceActivity y amigos realmente funcionan mejor con un conjunto fijo de datos.

El material de Preferencias está diseñado para ser fácil de implementar para su caso de uso específico, pero si su caso de uso cae fuera de ese alcance, y suena como lo hace, va a ser una molestia exprimir sus datos en un modelo de preferencias.

Si simplemente le gusta la interfaz de usuario de preferencias, puede, por supuesto, echar un vistazo al código fuente de Android para ver cómo se implementa y dejar que su propia lógica maneje una variante de esa interfaz de usuario.

Cuestiones relacionadas