android.view.LayoutInflater. Instantiates a layout XML file into its corresponding View objects. It is never used directly. Instead, use Activity.
The best method to use is this one LayoutInflater. from(context). It actually does the same as the answer below context. getSystemService, but since android can change the underlying methods, we should be using the parent method instead.
Inflating means reading the XML file that describes a layout (or GUI element) and to create the actual objects that correspond to it, and thus make the object visible within an Android app.
Put simply, an inflater allows you to create a View from a resource layout file so that you do not need to create everything programmatically. In your example, you inflate the layout R. layout.
use outside of your activity
LayoutInflater inflater = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE );
Within your activity
LayoutInflater inflater = getLayoutInflater();
Check this
If you open up the Android source you can see that the LayoutInflator.from method looks like so:
/**
* 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;
}
and there is no difference
As long as the Activity or Window that calls getLayoutInflater()
has the same Context that would call getSystemService()
, there is no difference.
There is not much of a difference between them.
As doc says public abstract Object getSystemService (String name)
A LayoutInflater for inflating layout resources in this context.
And for the public static LayoutInflater from (Context context)
Obtains the LayoutInflater from the given context.
You can check this thread Is there any difference between getLayoutInflater() and .getSystemService(Context.LAYOUT_INFLATER_SERVICE)
The only difference is the context that you use. If the context that you use with LayoutInflater.fromContext()
or context.getSystemService(...)
is actually an Activity, it should be equivalent to Activity.getLayoutInflater()
. If it's the application object, you might have problems inflating views that contain fragments, IIRC.
Actually I think that the getLayoutInflater()
- Method of Activity is a convenience - method.
Remember that Activity
subclasses Context
, so all of the Methods available within Context
are also available in the Activity
Class.
Internally there will be a call to LayoutInflater.fromContext()
or context.getSystemService()
, so I would stick to context.getSystemService
both to avoid the unnecessary method call as well to clarify that I am making a call to a system service.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With