Android之Adapter
来源:互联网 发布:中国网络好声音苏棱然 编辑:程序博客网 时间:2024/04/30 18:29
国外的书,读起来就是有点拗口。看的是Android4中文。上面把Adapter介绍的很详细,不过不够中国化。
Adapter介绍
Adapter用来把数据绑定到扩展了AdapterView类的视图组(ListView或Gallery),Adapter负责创建代表所绑定父类视图中的底层数据库的子视图。【简单的说就是为ListView或Gallery中加载子视图,视图就是控件】
【别人的图,很清晰的表达了这个意思:Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。】
【这个图,也很清楚的表现了所有的原生的Adapter】
原生的Adapter介绍
在很多情况下,都不需要从头创建自己的Adapter。Android提供了一个Adapter集,用于从公共数据库(包括数据和游标)来像扩展了AdapterView的原生控件提供数据。
因为Adapter即负责提供数据,又负责创建代表每一条目的的视图,所以Adapter可以从根本上修改他们所绑定的控件的外观和功能。
- ArrayAdapter:ArrayAdapter使用泛型来来把Adapter视图绑定到一个指定类的对象的数组。默认情况下,ArrayAdapter使用数组中每个对象的toString值来创建和填充文本视图。
- SimpleCursorAdapter:SimpleCursorAdapter可以把一个布局中的视图和游标的特定绑定到一起。【这个不是很了解先不介绍了】
制定ArrayAdapter
默认情况下,ArrayAdapter使用数组中每个对象的toString值来创建和填充文本视图。
在大多数情况下,需要制定ArrayAdapter来填充每个视图使用的布局,以表示底层的数组数据。为此,要使用特定类型的变体来扩展ArrayAdapter,并重写getView方法来向布局视图分配对象属性。
public class MyArrayAdapter extends ArrayAdapter<User>{ int resource; public MyArrayAdapter(Context context, int resource, List<User> objects) { super(context, resource, objects); this.resource = resource; } @Override public View getView(int position, View convertView, ViewGroup parent) { //创建并填充要显示的视图 LinearLayout newView; if(convertView == null){ //如果不是一次更新,则填充一个新视图 newView = new LinearLayout(getContext()); String inflater = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater li; li = (LayoutInflater)getContext().getSystemService(inflater); li.inflate(resource, newView,true); }else{ //否则更新现有的视图 newView = (LinearLayout)convertView; } User user = getItem(position); return super.getView(position, convertView, parent); } }getView方法用于构造、填充将添加到父AdapterView类(如ListView)中的视图,该父Adapterview类使用这个Adapter绑定到底层的数组。
getVIew方法的参数描述了要显示的条目的位置,要更新的视图,以及将包含这个形新视图的视图组。调用getItem将返回存数在底层数组的指定索引位置的值。
这个方法将返回新创建并填充的视图实例,或者更新的视图实例。
使用Adapter绑定数据到视图
要把一个Adapter应用到一个有AdapterVIew派生的类中,可以调用视图的setAdapter方法,并传递给他一个Adapter实例,如下
ArrayList<String> myStringArray = new ArrayList<String>(); int layoutId = android.R.layout.simple_list_item_1; ArrayAdapter<String> myAdapterInstance; myAdapterInstance = new ArrayAdapter<String>(getContext(), layoutId , myStringArray); myListView.setAdapter(myAdapterInstance);
还有一些别的Adapter的的子类,他们的用法有所不同,到时候用到了在写。
- Android之Adapter系列之Adapter接口
- Android 之Adapter
- android之Adapter
- Android之Adapter
- Android之adapter详解
- android之Adapter
- Android基础之Adapter
- Android之自定义Adapter
- Android之Adapter用法
- Android之Adapter(适配器)
- Android之Adapter用法
- Android之Adapter优化
- Android之Adapter优化
- Android之Adapter优化
- android之adapter
- Android之Adapter
- Android之各种Adapter
- Android之Adapter总结
- JPA通用Dao类设计
- 2015.11.23一句话
- 互联网技术发展之路(6)- 服务层技术剖析
- ebs R12 杂收杂发 代码
- 实现Android中TextView的跑马灯效果
- Android之Adapter
- 杭电1425 sort
- c++之判断栈的弹出是否合法
- 猜测首府
- ios:字符串与汉字的判断
- hadoop集群动态添加和删除节点说明
- 主存储器物理地址,逻辑地址,转换
- 互联网技术发展之路(7)- 网络层技术剖析
- Same Tree