1什么是Adapter?

Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(List View,Grid View)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:

2.所有的adapter如下所示

比较常用的有 Base Adapter,Impleader,Adapter,Counteradaptation等。

  • BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
  • ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
  • SimpleAdapter有最好的扩充性,可以自定义出各种效果。
  • SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。

如果想得到各个adapter的详细信息可以参考官网教程

3.举例来研究具体的adapter应用

3.1 ArrayAdapter的应用,注意它支持泛型操作,最为简单,只能展示一行字

方法一不用布局文件xml,直接继承ListActivity

package com.dragon.testevent;import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;public class MainActivity extends ListActivity {@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);String[] strs = {"A","B","C","D","E","F","G"};//ArrayAdapter有三个参数,第一是对象,第二是List的格式,第三个是List的内容//android.R.layout.simple_list_item_1  自带布局,还有android.R.layout.simple_list_item_multiple_choice, android.R.layout.simple_list_item_checked,android.R.layout.simple_list_item_single_choice等ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strs);setListAdapter(adapter);//将当前显示到listView中}
}

效果图

方法2:继承Activity,ListActivity和普通的Activity相比,ListView做了许多显示方面的优化,其它一样

package com.dragon.testevent;import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;import java.util.ArrayList;
import java.util.List;public class MainActivity extends Activity {private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);listView = new ListView(this);listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData()));setContentView(listView);}private List<String> getData(){List<String> data = new ArrayList<String>();data.add("what's wrong?");data.add("let me know.");data.add("why not?");data.add("you are right.");return data;}}

大家可以对比上面两种方式有什么不一样,下面是效果图

3.2 simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView,还可以放上Button,CheckBox等等。下面的代码都直接继承了ListActivity

下面是activity_main.xml的代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:gravity="center_horizontal"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.dragon.testevent.MainActivity"><ImageView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/img"android:layout_margin="5dp"/><TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/title"android:textColor="#ffffff"android:textSize="20sp"/>
</LinearLayout>

对应的java代码

package com.dragon.testevent;import android.app.ListActivity;
import android.os.Bundle;
import android.widget.SimpleAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends ListActivity {@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.activity_main,new String[]{"title","img"},new int[] {R.id.title,R.id.img});setListAdapter(adapter);}private List<Map<String,Object>> getData(){List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();Map<String,Object> map = new HashMap<String,Object>();map.put("title","it time to go");map.put("img",R.drawable.plane);list.add(map);map = new HashMap<String,Object>();map.put("title","whtch man, you know");map.put("img",R.drawable.plane);list.add(map);map = new HashMap<String ,Object>();map.put("title","the game of power");map.put("img",R.drawable.plane);list.add(map);return list;}}

下面是效果图

3.3 一定要以数据库作为数据源的时候,才能使用SimpleCursorAdapter。这里不在举例说明。

reference:

1. http://www.cnblogs.com/devinzhang/archive/2012/01/20/2328334.html

android studio for android learning (九) android之Adapter用法相关推荐

  1. android studio控件使用方法,android studio使用教程

    android studio使用教程 Android Studio是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studi ...

  2. android apt最新版本,解决Android studio 2.3升级到Android studio 3.0 后apt报错问题

    解决Android studio 2.3升级到Android studio 3.0 后apt报错问题 发布时间:2020-09-16 19:59:42 来源:脚本之家 阅读:62 作者:哈特中尉 1. ...

  3. 1.Android简介,Android Studio安装,创建运行Android程序

    文章目录 1.了解通信技术 2.Android简介   2.1 Android起源   2.2 Android历史版本 3.Android Studio开发环境的搭建 3.1 Android Stud ...

  4. 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android

    背景 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android 应用程序? 运行调式一个Android项目,写下必要的代码后,接下来的任务是在模拟器或手机上运 ...

  5. Android studio通过荣耀20调试Android程序

    Android studio通过荣耀20调试Android程序 通过Android studio通过荣耀20调试Android程序,要考虑三方面的因素: ·····手机····· ·····windo ...

  6. android studio 看不到 manifest,Android Studio: Android Manifest doesn't exist

    可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I got this error on Android Studio (AS): How I ...

  7. Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.

    目录 一.问题描述 二.解决方案 2.1 开启CPU虚拟化 2.2 禁用Hyper-V 2.3 使用管理员命令行在驱动程序包中执行"silent_install.bat" 一.问题 ...

  8. 【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中导出安卓工程 | Android Studio 打开 Unity 导出的 Android 工程 )

    文章目录 一. Android 工程打包 二. Android Studio 打开 Unity 导出的 Android 工程 一. Android 工程打包 Android 工程打包 就是将 Unit ...

  9. Android Studio电脑上怎么下载-Android Studio下载和安装图文教程[超详细]

    安装 Android Studio 只需轻松点击几下,即可完成 Android Studio 的设置. 首先,请务必下载最新版本的 Android Studio. Windows 如需在 Window ...

  10. Android音视频学习系列(九) — Android端实现rtmp推流

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

最新文章

  1. ASP.NET Session 使用报告(转贴)
  2. 第 1 节: 1-文本自增演示HttpHandler不记忆状态
  3. php和mysql函数的区别吗,(PHP,MySQL)函数仅在2种情况中的1种有效,找不到区别
  4. (软件工程复习核心重点)第一章软件工程概论-第三节:软件生命周期
  5. android转iOS看什么书,一起聊聊:是什么让你从Android转向iOS?
  6. mysql 优化 (1)
  7. rocketmq安装教程以及遇到的坑排查
  8. cron表达式解析生成网站
  9. 【经验分享】学长,我也想考清华!
  10. c++采集声卡输出_windows上面捕获声卡数据
  11. mcu AD采样值和物理值
  12. SEO之关键词的选择
  13. 用户 'sa' 登录失败,怎么回事?
  14. 开展网络口碑营销的前提
  15. 计算机上面的字体怎么应用,字魂字体怎么放PS里面用 应用到PS的方法
  16. ps设计精讲精练笔记
  17. 深度强化学习发展现状及展望:万字总结解读83篇文献
  18. 空气净化器上亚马逊需要提交UL867测试报告
  19. 盗梦空间科普札记之一:梦里乾坤嵌套深,醒来可知在哪层?
  20. 模棱两可的生物学概念问题辨析1

热门文章

  1. 云南满泽生物科技有限公司 满泽玛卡玛咖精片 东革阿里 奶昔
  2. OpenCV-特征提取与检测(04、亚像素级别角点检测)
  3. OpenCV-图像处理(27、模板匹配(Template Match))
  4. C程序设计--文件1--文件的分类+文件的打开和关闭
  5. iphone数据传输已取消怎么办_消失的3.5mm接口:厂商真好心取消3.5mm接口?其实大家全都是韭菜...
  6. 数据库删除表中多列语法总结
  7. java 名称可以包含-吗_java – 验证失败时包含参数名称的自定义...
  8. auto cad 打印颜色变浅_CAD初学者最容易忽视的CAD打印线宽问题,你“中枪”了吗?...
  9. 【2019CCPC秦皇岛:A】Angle Beats(离线+斜率Hash+分类讨论)
  10. C语言打印杨辉三角(C笔记)