zoukankan      html  css  js  c++  java
  • Adapter 介绍

    一、介绍

         Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView,Spinner,Gallery)等地方都需要用到Adapter

         首先看一下Android中,类的继承关系。

    注释:斜体的为抽象类。

    比较常用的有 BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。

    •BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;

      可参考http://www.cnblogs.com/wyqfighting/archive/2013/04/15/3022400.html,每一项中显示自己定义的类,有图片,有文字等

    •ArrayAdapter<T>支持泛型操作,最为简单,只能展示一行字。当数据来源为一个ArrayList时。

      可参考:http://www.cnblogs.com/wyqfighting/archive/2013/05/13/3076105.html

    •SimpleAdapter有最好的扩充性,可以自定义出各种效果

    •SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。

         如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来

    二、详细

     1 public interface Adapter {  
     2     // 为了避免产生大量的View浪费内存,在Android中,AdapterView中的View是可回收的使用的。比如你有100项数据要显示,而你的屏幕一次只能显示10条数据,则   
     3     // 只产生10个View,当往下拖动要显示第11个View时,会把第1个View的引用传递过去,更新里面的数据再显示,也就是说View可重用,只是更新视图中的数据用于显示新   
     4     // 的一项,如果一个视图的视图类型是IGNORE_ITEM_VIEW_TYPE的话,则此视图不会被重用   
     5     static final int IGNORE_ITEM_VIEW_TYPE = AdapterView.ITEM_VIEW_TYPE_IGNORE;  
     6   
     7     static final int NO_SELECTION = Integer.MIN_VALUE;  
     8   
     9     // 注册一个Observer,当Adapter所表示的数据改变时会通知它,DataSetObserver是一个抽象类,定义了两个方法:onChanged与onInvalidated   
    10     void registerDataSetObserver(DataSetObserver observer);  
    11   
    12     // 取消注册一个Observer   
    13     void unregisterDataSetObserver(DataSetObserver observer);  
    14   
    15     // 所表示的数据的项数   
    16     int getCount();  
    17   
    18     // 返回指定位置的数据项   
    19     Object getItem(int position);  
    20   
    21     // 返回指定位置的数据项的ID   
    22     long getItemId(int position);  
    23   
    24     // 表示所有数据项的ID是否是稳定的,在BaseAdapter中默认返回了false,假设是不稳定的,在CursorAdapter中返回了true,Cursor中的_ID是不变的   
    25     boolean hasStableIds();  
    26   
    27     // 为每一个数据项产生相应的视图   
    28     View getView(int position, View convertView, ViewGroup parent);  
    29   
    30     // 获得相应位置的这图类型   
    31     int getItemViewType(int position);  
    32   
    33     // getView可以返回的View的类型数量。(在HeaderViewListAdapter中可以包含Header和Footer,getView可以返回Header、Footer及Adapter   
    34     // 中的视图,但其getViewTypeCount的实现只是调用了内部Adapter的的getViewTypeCount,忽略了Header、Footer中的View   
    35     // Type,不懂。   
    36     int getViewTypeCount();  
    37   
    38     //是否为空   
    39     boolean isEmpty();  
    40 }  

    至于每个Adapter具体怎么用,参见后面的博文。

  • 相关阅读:
    body test
    menu
    Toolbutton test itk_component
    grid pack
    double inherit
    set font
    Activity test itk_component
    Activity test no class
    按键驱动调试总结
    system.img解包打包的方法
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/3090677.html
Copyright © 2011-2022 走看看