常用下面兩種方式:
- View.inflate(context,R.layout.recyclerview_app_main_normal,null)
- LayoutInflater.from(context).inflate(R.layout.recyclerview_app_main_normal, parent, false)
兩種方式的區別與聯繫:
View類中的inflate方法內部包裹了LayoutInflater類的inflate方法,這個方法是一個靜態方法,不需要創建View類的對象,直接使用View類名調用。相比另一種方法是一種簡便方法,但不如上一個方法功能強大。另外這種方式最外層佈局參數不會有效。
- 如果root爲null,attachToRoot將失去作用,設置任何值都沒有意義。同時這個佈局的最外層參數就沒有效了;
- 如果root不爲null,attachToRoot設爲false,則會將佈局文件最外層的所有layout屬性進行設置,當該view被添加到父view當中時,這些layout屬性會自動生效;
- 如果root不爲null,attachToRoot設爲true,則會給加載的佈局文件的指定一個父佈局,即root。
總之,View.inflate()會調用LayoutInflater.from().inflate(),而LayoutInflater.from().inflate()會調用context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)。
所以,如果佈局的最外層設置了參數,就是用第二種;如果最外層未設置參數,可以使用第一種。