Android之Adapter

来源:互联网 发布:中国网络好声音苏棱然 编辑:程序博客网 时间:2024/04/30 18:29

国外的书,读起来就是有点拗口。看的是Android4中文。上面把Adapter介绍的很详细,不过不够中国化。


Adapter介绍

Adapter用来把数据绑定到扩展了AdapterView类的视图组(ListView或Gallery),Adapter负责创建代表所绑定父类视图中的底层数据库的子视图。【简单的说就是为ListView或Gallery中加载子视图,视图就是控件】


【别人的图,很清晰的表达了这个意思:Adapter是连接后端数据和前端显示的适配器接口,是数据和UIView)之间一个重要的纽带。

【这个图,也很清楚的表现了所有的原生的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的的子类,他们的用法有所不同,到时候用到了在写。


0 0
原创粉丝点击