¿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.

  • ¿Cuál es el método recomendado para sincronizar el acceso a un objeto en Java para Android?
  • ¿Cómo hacer una solicitud de POST utilizando retrofit 2?
  • NullPointerException con aceleración de hardware activada?
  • ¿Cómo devolver un valor de una clase interna?
  • Cómo borrar el historial visitado (CSS) de un WebView de Android?
  • Java argumento de longitud variable múltiple
  • Android HttpClient y Cookies
  • Android Image Viewer de la aplicación
  • Android Studio 3.0 Canary 1: Las pruebas de Kotlin o las pruebas de Java referentes a las clases de Kotlin fallan
  • ¿Pasar un argumento al llamar a setOnClickListener?
  • Jeta: Cómo crear procesadores de anotación personalizados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.