java - que - ¿Cuál es el significado de un signo de dólar antes de un ID de recurso de Android
simbolo del dolar (2)
En la respuesta aceptada de la siguiente publicación ( teclado numérico personalizado de Android ) encontré una sintaxis que no entiendo:
$(R.id.t9_key_0).setOnClickListener(this);
¿Qué significa el signo de dólar en frente? ¿Está específicamente relacionado con los ID de recursos de Android o es más una sintaxis general de Java? Los resultados del motor de búsqueda no mostraron ningún resultado adecuado.
Antes, sabíamos que necesitábamos convertir cada tipo de findViewById()
método findViewById()
. Me gusta
manera usual
TextView textView = (TextView) findViewById(R.id.textView);
Esta forma de chico
TextView textView = $(R.id.textView);
Ignoró el encasillamiento por su método genérico.
Entonces el tipo usó Java genérico para ignorar el tipo que lanza todo el findViewById();
. Si no entiende los genéricos, lea por qué usar los genéricos .
protected <T extends View> T $(@IdRes int id) {
return (T) super.findViewById(id);
}
Entonces ahora no necesita escribir el reparto
TextView textView = $(R.id.textView);
Explicación de este método.
- Él creó un método que acepta la identificación de recursos. Entonces él puede pasar un Id.
-
@IdRes
este parámetro mediante@IdRes
para que Android Studio solo permita los identificadores de recursos en este parámetro. - Luego llamó al método de
findViewById
que devuelve View. - Devolvió
<T extends View>
del método, por lo que siempre tendrá el objeto View en return type.
Importante
Ahora no necesita hacer sus métodos genéricos. Porque el propio Android ha cambiado su método. Consulte Android Oreo Changes para findViewById()
.
Todas las instancias del método findViewById () ahora devuelven T en lugar de Ver.
Ahora también puedes hacer lo mismo como ese tipo sin encasillar
TextView textView = findViewById(R.id.textView);
Es una llamada a método donde el nombre del método es $
. El método se define de la siguiente manera en el código que ha vinculado:
protected <T extends View> T $(@IdRes int id) {
return (T) super.findViewById(id);
}
El método es un helper que elimina la necesidad de convertir el tipo de retorno de findViewById()
. Ya no es necesario a partir de Android O ya que la plataforma findViewById()
usa genéricos para hacer lo mismo.
El nombre $
probablemente está inspirado en jQuery .