• 数据适配器(2017年12月11日)


    2017.12.11

    1Android提供了哪些数据适配器?

    使用数据列表(ListviewGridViewRecyclerView),关键点还是数据适配器。数据适配器解决了将数据如何显示到条目布局上这个问题。

    ArrayAdapter示例中,我们发现只能将一列数据贴到item布局上,且item布局只有一个控件。实际开发中,允许item布局非常复杂,可以将多个不同的数据贴到item布局中多个控件上,如何处理?

    假设不仅仅有姓名,还有电话这2个信息,如何处理?发现ArrayAdapter传入数据只能传入一个数组,数组内都是一个作用的数据(例如只能是姓名或者只能是电话,不能是2个都在)。

    有哪些可以使用的数据适配器?

    ArrayAdapter:只能处理一列数据

    SimpleAdapter:可以处理多列数据

    BaseAdapter:可以处理多列数据,且还可以对数据以及条目进行更复杂的操作,例如选中变红。

    2ArrayAdapter如何使用?

    它继承了BaseAdapter,是对BaseAdapter的进一步封装。为开发简化操作步骤。

    常用:public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)这个构造函数

    context:表示上下文

    resource:条目布局

    textViewResourceId:条目中那个textView

    objects:泛型数组,T在实例化时指定

    3SimpleAdapter如何使用?

    它继承了BaseAdapter,是对BaseAdapter的进一步封装。为开发简化操作步骤。

    允许多列数据,也就是给条目填充数据时允许多列对应多个控件,控件不限于某一种。

    使用:public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)构造函数创建adapter实例

    context:表示上下文

    data:表示向条目中填充的数据,允许多列。关于data数据的解释:

     

    resource:表示条目布局

    from:表示什么数据

    to:表示什么控件

    fromto表示将哪列数据贴到哪个控件。

    【案例】创建SimpleAdapter的数据。将一个二维表数据存入到List集合中。

     

    【案例】创建SimpleAdapter

    项目结构:

     

    activity_main.xml

     

    item.xml

     

    styles.xml

     

    MainActivity.java

     

     

     

    效果:

     

    4、使用BaseAdapter,创建一个类继承BaseAdapter

    需要实现的方法有:

    int getCount():表示返回数据有多少条。

    Object getItem(int position):表示返回当前条目

    long getItemId(int position):表示返回当前条目的id

    View getView(int position,View convertView ,ViewGroup parent):表示返回条目布局

    注意:

    这些方法称为回调方法,调用交给了Android开发框架,不是由自身代码调用;

    方法中的参数,叫回调参数,参数的实参也不是由当前代码提供,交给了android开发框架来提供。

    【案例】使用BaseAdapter

     

    item.xml:

     

    其他xml文件参考上例。

    MyBaseAdapter.java

     

     

    MainActivity.java

     

    效果:

     

    【作业】

    修改课堂案例,实现奇偶行背景颜色不一样。

  • 相关阅读:
    UOJ168. 【UR #11】元旦老人与丛林
    luogu3308,LOJ 2196 [SDOI2014]LIS
    CF1349F2. Slime and Sequences (Hard Version)
    6210. wsm
    欧拉数学习小记
    CF1508F. Optimal Encoding
    CF1508C. Complete the MST
    联合省选2021 游记
    一. Docker介绍
    Elasticsearch
  • 原文地址:https://www.cnblogs.com/sanshengshitouhua/p/14577199.html
Copyright © 2020-2023  润新知