Android: crea automáticamente variables para todos los IDs en xml
Me di cuenta de que una de las partes más tediosas de desarrollo de Android es el diseño de diseño, incluso con el constructor de diseño.
Después de configurar los gráficos, el diseño, haciendo asociaciones de variables con los elementos de diseño es muy tedioso, como ImageButton myButton = (ImageButton)findViewById(R.id.myButton);
- Error al agregar CardView al diseño
- ¿Cómo uso tabHost para Android
- ¿Qué sucede si la minSdkVersion es menor que la targetSdkVersion?
- ADT de Android: no fragment_main.xml, sólo activity_main.xml
- Diseño de Android - RelativeLayout (color de fondo)
En los diseños más grandes, estos pueden obtener tedioso para realizar un seguimiento (recordando los nombres de los elementos) y, a continuación, la necesidad de añadir más variables en cualquier tipo de orden es frustrante.
Para mitigar ligeramente esto, sería muy conveniente si todos los IDs que declaré en el XML se asociaran automáticamente con sus propias variables, y todos esos tipos de datos ya estaban incluidos en esa clase
¿Hay algo que ya hace esto?
Por ejemplo si escribo
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/myButton" android:id="@+id/myButton"></ImageButton>
Entonces me gustaría que las clases que incluyen este diseño ya tienen
import android.ImageButton; ImageButton myButton; myButton = (ImageButton)findViewById(R.id.myButton);
¿Es este un ajuste o una característica a solicitar? Estoy utilizando el Eclipse IDE y sería muy conveniente
- Error al intentar probar AnimatedVectorDrawable, "No se puede cambiar de x a z"
- Efecto de ondulación en la parte superior de la imagen - Android
- ¿Cómo infulo una vista personalizada en XML?
- Lectura de un archivo de texto o de un archivo XML en Android java
- Error al inflacionar la clase android.widget.CheckBox
- Utilizando diferentes archivos de cadenas en android
- Agregar varias vistas personalizadas al diseño mediante programación
- Cambiar el color del RadioButton en la API 19 y siguientes?
Pruebe a utilizar Anotaciones de Android . Proporciona anotaciones útiles para reemplazar el código clásico.
Por ejemplo, vea la documentación de @ViewById
: simplemente declare los campos anotados
@ViewById EditText myEditText; @ViewById(R.id.myTextView) TextView textView;
Reemplaza
EditText myEditText; TextView textView; @Override public void onCreate(Bundle savedInstanceState) { [...] myEditText = (EditText) findViewById(R.id.myEditText); textView = (TextView) findViewById(R.id.myTextView); }
Hice una herramienta para generar automáticamente el código de Java para atar la disposición XML y la lógica del programa junto.
Básicamente toma una disposición de XML, y genera todo el código de Java necesario para usted en un instante. Hay soporte para variables de miembro básicas, patrón ViewHolder, ArrayAdapter, CursorAdapter y tipos de código RoboGuice.
Lo puedes encontrar aquí: Android Layout Finder | Zumbido de Android
Esa es una solicitud de característica. Es muy buena y creo que sería muy útil; Por otro lado hay casos en los que no funcionaría muy bien, por ejemplo, si está inflando vistas de forma dinámica y no sabe, en tiempo de compilación, qué vista una Actividad particular se inflará. Sin embargo, tienden a pensar que este caso sería la excepción y no la regla.
La forma más fácil de hacerlo sería codificar una secuencia de comandos que escanea los archivos XML de la presentación en busca de componentes con ID y crea archivos .java con las definiciones adecuadas. Entonces, sus actividades podrían derivarse de esas clases auto-generadas. Algo como esto:
Cuando se procesa por el script, genera una clase:
class FooBarLayoutActivityBase extends Activity ... { protected ImageButton myButton; FooBarLayoutActivityBase() { myButton = (ImageButton)findViewById(R.id.myButton); } }
Entonces, simplemente puede heredar de esa clase base para usar los componentes …
El método de escritura es simple y no requiere que se profundice en el código de la cadena de herramientas, pero también podría hacerlo directamente en el complemento ADT.
- Proguard no puede encontrar la clase referenciada com.google.ads.internal.state.AdState
- ListView no se llena, getView () no se recibe