Android Inflater Usage

Source: Internet
Author: User

It is still very useful to layoutinflater this class in real-world development, which acts like Findviewbyid (). The difference is that Layoutinflater is used to find the XML layout file under res/layout/and is instantiated, while Findviewbyid () is looking for specific widget controls (such as button, TextView, and so on) under the XML layout file. Specific role: 1, for a non-loaded or want to dynamically load the interface, you need to use Layoutinflater.inflate () to load;

2, for an already loaded interface, you can use the Activiyt.findviewbyid () method to obtain the interface elements.

Layoutinflater is an abstract class that is declared in the document as follows:

Publicabstractclass layoutinflater extends Object

Three ways to get Layoutinflater instances

1.layoutinflater inflater = Getlayoutinflater (); Call activity's Getlayoutinflater ()

2.layoutinflater localinflater = (layoutinflater) context.getsystemservice

( context.layout_inflater_service);

3. Layoutinflater inflater = layoutinflater.from (context);

In fact, these three kinds of ways are essentially the same, from the source can be seen:

Getlayoutinflater ():

The Getlayoutinflater () method of the Activity is to call Phonewindow's Getlayoutinflater () method and take a look at the source code:

Public Phonewindow (context context) { super (context); Mlayoutinflater = layoutinflater.from (context);  } 

It can be seen that it is actually called layoutinflater.from (context).

Layoutinflater.from (context):

PublicStaticLayoutinflater from (context context) {Layoutinflater Layoutinflater =(Layoutinflater) Context.getsystemservice (Context.layout_inflater_service); if (layoutinflater = = null) { thrownew  Ertionerror ("Layoutinflater not Found.");  } return layoutinflater;  }

It can be seen that it actually calls Context.getsystemservice ().

Conclusion: So the final essence of these three methods is all called Context.getsystemservice ().

Inflate Method through the SDK API documentation, you can know that the method has the following overload forms, the return value is the View object, as follows:

PublicView Inflate (intresource, ViewGroup root) Public View Inflate (Xmlpullparser parser, ViewGroup root) public View inflate (Xmlpullparser pars Er, ViewGroup root, boolean attachtoroot) public View Inflate (int resource, ViewGroup root,< c12> boolean attachtoroot)

Schematic code:

Layoutinflater Inflater = (layoutinflater) getsystemservice (Layout_inflater_service);  View view = Inflater.inflate (R.layout.custom, (ViewGroup) Findviewbyid (r.id.test)); //edittext EditText = (EditText) Findviewbyid (r.id.content);//Error EditText EditText = (EditText) view.fin Dviewbyid (r.id.content);

For the above code, the second parameter ViewGroup root is specified, and of course you can set the null value.

Attention:

Inflate method is different from Findviewbyid method;

Inflater is used to find the XML layout file under Res/layout, and instantiate it;

Findviewbyid () is to find specific widget controls (such as Button, TextView, and so on) in the specific XML layout file.

Android Inflater Usage

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.