Android之Adapter

国外的书,读起来就是有点拗口。看的是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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值