现在的位置: 首页 > 综合 > 正文

LayoutInflater动态加载布局文件及视图适配器BaseAdapter

2018年02月10日 ⁄ 综合 ⁄ 共 1501字 ⁄ 字号 评论关闭

一、android.view.LayoutInflater:布局膨胀器、布局加载器。

对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入,LayoutInflater作用是将layout的xml布局文件实例化为View类对象。

实现:

1、获取布局加载器:

LayoutInflater nflater = LayoutInflater.from(context);//当然还有另外两种方法。

2、从布局文件实例化一个视图:

View view = nflater.inflater(R.layout.Item,null);//在布局文件夹中有Item.xml这个布局文件

3、获取视图中的控件:

LinearLayout layout=(LinearLayout)view.findViewById(R.id.textLayout); //获取视图中的线性布局控件,
TextView textview = (TextView)vView.findViewById(R.id.title); //获取视图中的文本控件
Button btn = (Button)view.findViewById(R.id.del_btn);  //获取视图中的按钮控件

获取控件的目的,是为了响应控件的敲击事件,例如布局控件的敲击事件,当在整个线性布局内点击时都会触发点击事件。

二、基础适配器BaseAdapter:android.widget.BaseAdapter

适配器的作用主要是用来给诸如(Spinner、ListView、GridView)来填充数据的。而(Spinner、ListView、GridView)都有自己的适配器,但是BaseAdapter(一招鲜)对他们来说却是通用的。

ListActivity适配器的实现:

1、定义自己的继承于基础适配器类,并实现几个重要的重载方法

class ChannelAdapter extends BaseAdapter  
{
	 //需要必须实现的几个重要方法
		public int getCount()//设置layout中填充的条目数量
	  {
		}
		//根据位置索引获取条目名称
		public String getItem(int position)
		{	
		}
		//取得当前位置的根据位置获取条目id
		public long getItemId(int position) {
			return 0;
		}
		
		//最重要的一个方法,获取视图
		/**
     * @param position      position就是位置从0开始
     * @param convertView   convertView是Spinner,ListView中每一项要显示的view
     * @param parent        parent就是父窗体了,也就是Spinner,ListView,GridView了
     * @return              通常return 的view也就是convertView
     * 绘制的内容均在此实现
     */

		public View getView(int position, View convertView, ViewGroup parent)
		{
	          //实现ListView中每一项要显示的view。
	           convertView = mInflator.inflate(R.layout.item, null);
		 //可以获取控件,并创建控件的点击响应函数
	         return convertView;
		}		
	}

2、在ListActivity的onCreate函数中实例化该适配器实例,然后关联起来

//实例化该适配器

ChannelAdapter  mAdapter=new ChannelAdapter(this);

//关联适配器

setListAdapter(mAdaper);

 

抱歉!评论已关闭.