您的位置:首页 > 移动开发 > Android开发

Android入门——适配器(Adapter)

2014-12-01 22:08 225 查看
今天我要和大家聊的是有关于适配器的一些问题,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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: