LayoutInflater(抽象类)在Android中是“扩展”的意思,作用类似于findViewById() ——>实例化控件。不同的是LayoutInflater是用来获得布局文件对象的,而findViewById()是用来获得具体控件的。
LayoutInflater经常在BaseAdapter的getView方法中用到,用来获取整个View并返回。
LayoutInflater的用法有三种:
第一种:
LayoutInflater inflater = LayoutInflater.from(this);
View layout = inflater.inflate(R.layout.main, null);
第二种:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.main, null);
第三种:
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);
第一种方法的本质就是调用第三种方法,第二种方法用于Activity类,而第三种方法主要用于BaseAdapter类
举例:
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.activity_logout_dialog, null);//引入自己定义好的布局文件
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(
MainActivity.this);
Button ok = (Button) view.findViewById(R.id.button_ok);
Button cancel = (Button) view.findViewById(R.id.button_cancel);