Android入门——适配器(Adapter)

今天我要和大家聊的是有关于适配器的一些问题,BaseAdater适配器;今天主要是了解一下关于数组适配器(ArrayAdapter)、简单适配器(SimpleAdapter)、自定义适配器这三大类。

适配器顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。可以看作是界面数据绑定的一种理解。它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。那么适配器是怎么处理得到的数据,并把它显示出来的呢。其实很简单,说白了适配器它也是一个类,在类里面它实现了父类BaseAdater()的这几个方法:

第一个方法是:publicint getCount() //返回总条目数,这个方法是给框架调用,必须要重写这样一个方法
第二个方法是:public Object getItem(int position)//根据position得到某一行的记录,getItem 返回具体条目对象 通俗的理解为你塞的是什么 就返回什么;举例:Person, Map,其中position是指当前条目的下标

public long getItemId(int position)//得到某一条记录的ID

//下面这个方法是最重要的相比于其它几个方法,它显式的定义了,适配器将要以什么样的方式去显示我们所填充的数据,在自定义的适配器里面我们通常会给它写个布局文件;返回具体条目的视图,也是框架需要调用的 publicView getView(int position, View convertView, ViewGroup parent)getView()

ArrayAdapter,SimpleAdapter,SimpleCursorAdapter 这三个,他们都是继承BaseAdapter这三者的区别与不同分别是:以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。

以下是一个适配器的应用代码:

private class MyAdapter extends BaseAdapter{

		/**
		 * list列表
		 * 返回总条目数
		 * 这个方法是给 框架调用
		 * 必须要重写这样一个方法
		 * @return
		 */
		@Override
		public int getCount() {
			return persons.size();
		}

		/**
		 * getItem 返回具体条目对象 你塞的是什么 就返回什么
		 * 举例:Person, Map
		 * @param position 当前条目的下标
		 * @return
		 */
		@Override
		public Object getItem(int position) {
			return persons.get(position);
		}

		/**
		 * getItemId 返回条目的下标
		 * @param position
		 * @return
		 */
		@Override
		public long getItemId(int position) {
			return position;
		}

		/**
		 * getView()返回具体条目的视图
		 * 也是框架需要调用的
		 * listView 优化
		 * @param position
		 * @param convertView
		 * @param parent
		 * @return
		 */
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			/*TextView textView = new TextView(MainActivity.this);
			textView.setText("张三");
			return textView;*/
			
			//怎么把一个布局文件变成一个view
			//充气泵 打气筒的意思
			//LayoutInflater 可以把一个布局文件变成一个view
			//LayoutInflater
			
			 //第一种得到打气筒的方法
			 LayoutInflater layoutInflater = MainActivity.this.getLayoutInflater();
			 
			/**
			 * 第二种得到打气筒的方法
			 * LayoutInflater layoutInflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			 */
			 //真正能把一个布局文件变成一个view对象
			 /**
			  * resource 条目布局文件
			  * root 他是否依赖于其他布局 如果不依赖 直接填写null
			  */
			 View view = layoutInflater.inflate(R.layout.listview_item, null);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值