在android開發中,我們不可能把所有的佈局和控件全部寫到一個layout.xml文件中去,即使可能,那也會讓一個xml文件變得異常臃腫,並且後期難以維護,所以我們有時候需要在需要用到相關的layout.xml文件的時候纔去實例化它,比如有很多的adapter中的佈局文件,我們就需要在adapter中進行先實例化他,然後才能使用findByID()的方式去查找相關的控件內容
LayoutInflate 的作用是將layout下的xml文件加入到內存中,而不是獲得他內部的相關控件的對象,可以這樣認爲,是 將這個佈局文件的對象拿到了
findViewByID() 的作用是拿到佈局文件中的相關控件的對象,然後對這個控件進行操作
LayoutInflate有3種實例化方式,但是有時候需要在具體地方調用具體的方式進行調用:
setContentView(R.layout.activity_main);
LayoutInflater layoutInflater1 = getLayoutInflater();
LayoutInflater layoutInflater2 = LayoutInflater.from(this);
LayoutInflater layoutInflater3 = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
}
這三種實例化的方式都是在activity中進行的,但是如果不在activity中進行實例化呢,所以還有另外的一種方式:
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater = LayoutInflater.from(context);
使用傳參進來的context進行實例化