1、适配器(Adapter的作用)
适配器对不同数据源的数据进行封装,可以对外提供统一的访问方式,这样控件本身
不关心数据的来源,只要绑定相应的适配器就可以了,简化了各种控件读取数据程序的复杂性。
2、主要的适配器类型
2.1、ArrayAdapter 它封装的是数组
2.2、SimpleAdapter 它封装的是一个ArrayList<Map<String,Object>>
2.4、BaseAdapter 用户自定义的Adapter
2.4、CursorSimpleAdapter 它封装的是一个操作数据库所返回的Cursor
3、ListView 搭配使用ArrayAdapter
1、配置适配器 2、绑定适配器
假如一个Activity中只有一个ListView控件,我们可以直接继承ListActivity
如果继承了ListActivity,又想使用自定义布局文件
那个这个布局文件中必须存在ListActivity中自带的
那个ListView控件的引用,名字是@android:id/list
4、ListView 搭配使用SimpleAdapter(自定义布局文件)
SimpleAdapter封装的数据是集合。集合内是一个map。
用来自定义布局
5、spinner (微调控件)
//设置微调控件的外观
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,citys);
//设置微调控件弹出下拉菜单的外观
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
6、GridView(网格控件)操作方式和ListView一样
常用属性:
android:numColumns="3" //一行显示的单元格数
android:horizontalSpacing="5dp" //单元格间水平间距
android:verticalSpacing="5dp" //单元格间垂直间距
android:stretchMode="columnWidth" //设置延伸模式来充满整个屏幕
android:columnWidth="64dp" //设置单元格的宽度
7、AutoCompleteTextView(自动完成文本)
8、Gallery(画廊)
9、BaseAdapter(基础适配器)
ArrayAdapter,SimpleAdapter都继承BaseAdapter
所以我们同样可以继承BaseAdapter来实现自定义的适配器
继承 BaseAdapter 要重写以下几个方法
/**
* 设置adapter共有几项数据
*/
@Override
public int getCount() {
return names.length;
}
/**
* 通过调用getItemAtPosition(position) 方法所返回的所绑定的数据源
*/
@Override
public Object getItem(int position) {
return names[position];
}
/**
* 返回所点击选项的索引号
*/
@Override
public long getItemId(int position) {
return position;
}
/**
* 用来生成视图控件的方法,有几行数据就调用几次 View是所有控件的父类
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
}
10、布局填充泵用来解析xml文件生成视图
// 得到布局xml文件的解析器
LayoutInflater layoutInflater = getLayoutInflater();
// 通过布局填充泵来解析xml文件,使之生成一个控件视图
View view = layoutInflater.inflate(R.layout.my, null);
11、ListView 控件的优化,当一行数据离开ListView控件的时候
它不会被释放,而是放入回收站,那么下面上来的数据就会从
回收站中取出来(取出来的放在了convertView),不会重新
解析填充,无非就是把回收到的对象内的数据进行修改下重复
使用,提高了效率。
12、持有者模式优化
每行数据都持有一个管理对象,这个对象会帮你查找想要的组件,
第一次它会查找,找到后保存起来,下次再要其查找的话,它会
把第一次找到的对象直接返回,而不会重复查找,提高了查找的
效率。