zoukankan      html  css  js  c++  java
  • Android学习之Adapter(数据适配器)

    1.定义

        数据适配器是AdapterView视图(如ListView - 列表视图控件、Gallery - 缩略图浏览器控件、GridView - 网格控件、Spinner - 下拉列表控件、AutoCompleteTextView - 自动提示文本框、ExpandableListView - 支持展开/收缩功能的列表控件等)与数据之间的桥梁,用来处理数据并将数据绑定到AdapterView上。

    2.作用

       数据适配器是连接数据源和视图界面的桥梁。

    3.分类

        包括ArrayAdapter(数组适配器)以及SimpleAdapter(简单适配器)。其中:

    1. ArrayAdapter用于绑定格式相对单一的数据,数据源主要是集合或者数组;
    2. SimpleAdapter用于绑定格式复杂的数据,数据源只能是泛型的集合;

    4.实现

    1. 新建适配器;
    2. 添加数据源到适配器;
    3. 视图加载适配器;

    5.案例

    (1)具体用到的类:

    1. ArrayAdapter(上下文,当前ListView加载的每一个列表所对应的布局文件,数据源)
    2. SimpleAdapter(context,data,resource,from,to)其中,context:上下文,data数据源(List<? extends Map<String,?>> data)一个Map所组成的List集合) 每一个Map都会去对应ListView列表中的一行 每一个Map(键-值对)中的键必须包含所有在from中所指定的键,resource:列表项的布局文件ID,from:Map中的键名(String[]格式),to:绑定数据视图中的ID,与from成对应关系(int[]格式);

    (2)代码实例:

    • ArrayAdapter
     1     ListView listView;
     2     ArrayAdapter arrayAdapter;
     3 
     4     @Override
     5     protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_violet);
     8         listView = (ListView) findViewById(R.id.listView);
     9         String[] data={"苹果","香蕉","桃子","西瓜"};
    10         arrayAdapter=new ArrayAdapter(this,R.layout.abc_simple_dropdown_hint,data);//上下文,当前ListView加载的每一个列表所对应的布局文件,数据源) 
    11 listView.setAdapter(arrayAdapter);
    12 }
    • SimpleAdapter
     1     ListView listView;
     2     SimpleAdapter simpleAdapter;
     3 
     4     @Override
     5     protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_violet);
     8         listView = (ListView) findViewById(R.id.listView);
     9         List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
    10         String[] persons = {"张老师", "陈老师", "李老师", "黄老师"};
    11         String[] phoneNums = {"18706218201", "18706214521", "13908761231", "18512390812"};
    12         for (int i = 0; i < persons.length; i++) {
    13             HashMap<String, Object> map = new HashMap<String, Object>();
    14             map.put("username", persons[i]);
    15             map.put("phoneNum", phoneNums[i]);
    16             //插入图片
    17             map.put("photo",R.drawable.cc);
    18             data.add(map);
    19         }
    20 //(context,data,resource,from,to)
    21 simpleAdapter = new SimpleAdapter(this, data, R.layout.list_item, new String[]{"username","photo", "phoneNum"}, new int[]{R.id.username,R.id.photo, R.id.phoneNum});
    22 listView.setAdapter(simpleAdapter); 23 }
  • 相关阅读:
    历史书单
    《Tornado介绍》—— 读后总结
    基于TensorFlow的深度学习系列教程 2——常量Constant
    深度学习Tensorflow生产环境部署(下·模型部署篇)
    深度学习Tensorflow生产环境部署(上·环境准备篇)
    Crontab和sudo中无法使用TensorFlow ImportError libcublas.so.9.0
    基于TensorFlow的深度学习系列教程 1——Hello World!
    想要接触人工智能吗?先要学会如何阅读论文
    《数据挖掘与数据化运营实战 思路、方法、技巧与应用》—— 读书笔记
    《新参者》—— 读后总结
  • 原文地址:https://www.cnblogs.com/TechSnail/p/4678945.html
Copyright © 2011-2022 走看看