在實際開發種LayoutInflater這個類還是非常有用的,它的作用類似於findViewById(),不同點是LayoutInflater是用來找layout下xml布局文件,並且實例化!而findViewById()是找具體xml下的具體widget控件(如:Button,TextView等)。有很多地方可以使用:
對於一個沒有被載入或者想要動態載入的界面, 都需要使用inflate來載入. 如BaseAdapter的getView中,自定義Dialog中取得view中的組件widget等等。
下面這是個簡單的BaseAdapter:
首先聲明LayoutInflater
[java]
private LayoutInflater inflater=null;
在getView()方法裡使用
[java]
inflater=LayoutInflater.from(context);
View v=inflater.inflate(R.layout.listview_item, null);
完整代碼:
[java]
public class PullXmlAdapter extends BaseAdapter {
private List<Book> list=null;
private Context context=null;
private LayoutInflater inflater=null;
public PullXmlAdapter(Context context,List<Book> list) {
// TODO Auto-generated constructor stub
this.context=context;
this.list=list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
inflater=LayoutInflater.from(context);
View v=inflater.inflate(R.layout.listview_item, null);
TextView tv=(TextView)v.findViewById(R.id.lisview_item_tv);
tv.setText(list.get(arg0).getName());
return v;
}
}