¿Cuál es la forma correcta de obtener el inflador de diseño en Android?

Hay una manera de obtener layoutInflater:

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

Y otra forma es:

 LayoutInflater inflater = LayoutInflater.from(context); 

Un tercero (cuando estoy en una actividad) es:

 LayoutInflater inflater = getLayoutInflater(); 

Entonces, ¿cuál es la diferencia entre ellos?

Tenga en cuenta que cuando envié el tercer inflado a mi adaptador, mi aplicación funcionó. Pero cuando envié el contexto y creé el inflador a través de la segunda vía, ¡no!

4 Solutions collect form web for “¿Cuál es la forma correcta de obtener el inflador de diseño en Android?”

No hay mucha diferencia entre ellos.

Como doc dice público abstract Object getSystemService (String name)

Un LayoutInflater para inflar recursos de diseño en este contexto.

Y para el LayoutInflater estático público de (Context context)

Obtiene el LayoutInflater desde el contexto dado.

Puede comprobar este hilo ¿Existe alguna diferencia entre getLayoutInflater () y .getSystemService (Context.LAYOUT_INFLATER_SERVICE)

Uso fuera de su actividad

  LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); 

Dentro de su actividad

  LayoutInflater inflater = getLayoutInflater(); 

Mira esto

Si abre la fuente de Android, puede ver que el método LayoutInflator.from se ve así:

  /** * Obtains the LayoutInflater from the given context. */ public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater == null) { throw new AssertionError("LayoutInflater not found."); } return LayoutInflater; } 

Y no hay diferencia

Siempre y cuando la Actividad o Ventana que llama a getLayoutInflater() tenga el mismo Contexto que llamaría getSystemService() , no hay diferencia.

La única diferencia es el contexto que usas. Si el contexto que utiliza con LayoutInflater.fromContext() o context.getSystemService(...) es realmente una actividad, debe ser equivalente a Activity.getLayoutInflater() . Si es el objeto de aplicación, puede tener problemas para inflar vistas que contienen fragmentos, IIRC.

En realidad creo que el getLayoutInflater() – Método de Actividad es un método de conveniencia.

Recuerde que las subclases de Activity Context , por lo que todos los Métodos disponibles dentro del Context también están disponibles en la Clase de Activity .

Internamente habrá una llamada a LayoutInflater.fromContext() o context.getSystemService() , así que me quedaría con context.getSystemService tanto para evitar la llamada al método innecesario como para aclarar que estoy haciendo una llamada a un servicio del sistema.

  • MediaPlayer se detiene y se reinicia
  • Android (ART) bloqueo con error JNI DETECTED ERROR EN APLICACIÓN: jarray es una tabla de referencia indirecta de pila no válida o una referencia no válida
  • Desempeño de Android: "Evita los internos y los setters"
  • Denotan progreso por el borde de Android
  • Desactivar grupo de menús de Android
  • Analizar una miniatura de YouTube en un iframe con Jsoup
  • Cuándo instalar keystore & cuándo instalar sólo el certificado envuelto en keystore
  • Cómo agregar HashMap a ArrayList
  • Recomienda una biblioteca de juegos Java / Android - tarjeta, tablero, etc.?
  • findViewByID () sigue devolviendo null en la clase de vista personalizada
  • Class Dimension para java en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.