android studio for android learning (九) android之Adapter用法
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用法相关推荐
- android studio控件使用方法,android studio使用教程
android studio使用教程 Android Studio是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studi ...
- 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. ...
- 1.Android简介,Android Studio安装,创建运行Android程序
文章目录 1.了解通信技术 2.Android简介 2.1 Android起源 2.2 Android历史版本 3.Android Studio开发环境的搭建 3.1 Android Stud ...
- 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android
背景 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android 应用程序? 运行调式一个Android项目,写下必要的代码后,接下来的任务是在模拟器或手机上运 ...
- Android studio通过荣耀20调试Android程序
Android studio通过荣耀20调试Android程序 通过Android studio通过荣耀20调试Android程序,要考虑三方面的因素: ·····手机····· ·····windo ...
- android studio 看不到 manifest,Android Studio: Android Manifest doesn't exist
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I got this error on Android Studio (AS): How I ...
- Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.
目录 一.问题描述 二.解决方案 2.1 开启CPU虚拟化 2.2 禁用Hyper-V 2.3 使用管理员命令行在驱动程序包中执行"silent_install.bat" 一.问题 ...
- 【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中导出安卓工程 | Android Studio 打开 Unity 导出的 Android 工程 )
文章目录 一. Android 工程打包 二. Android Studio 打开 Unity 导出的 Android 工程 一. Android 工程打包 Android 工程打包 就是将 Unit ...
- Android Studio电脑上怎么下载-Android Studio下载和安装图文教程[超详细]
安装 Android Studio 只需轻松点击几下,即可完成 Android Studio 的设置. 首先,请务必下载最新版本的 Android Studio. Windows 如需在 Window ...
- Android音视频学习系列(九) — Android端实现rtmp推流
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
最新文章
- ASP.NET Session 使用报告(转贴)
- 第 1 节: 1-文本自增演示HttpHandler不记忆状态
- php和mysql函数的区别吗,(PHP,MySQL)函数仅在2种情况中的1种有效,找不到区别
- (软件工程复习核心重点)第一章软件工程概论-第三节:软件生命周期
- android转iOS看什么书,一起聊聊:是什么让你从Android转向iOS?
- mysql 优化 (1)
- rocketmq安装教程以及遇到的坑排查
- cron表达式解析生成网站
- 【经验分享】学长,我也想考清华!
- c++采集声卡输出_windows上面捕获声卡数据
- mcu AD采样值和物理值
- SEO之关键词的选择
- 用户 'sa' 登录失败,怎么回事?
- 开展网络口碑营销的前提
- 计算机上面的字体怎么应用,字魂字体怎么放PS里面用 应用到PS的方法
- ps设计精讲精练笔记
- 深度强化学习发展现状及展望:万字总结解读83篇文献
- 空气净化器上亚马逊需要提交UL867测试报告
- 盗梦空间科普札记之一:梦里乾坤嵌套深,醒来可知在哪层?
- 模棱两可的生物学概念问题辨析1
热门文章
- 云南满泽生物科技有限公司 满泽玛卡玛咖精片 东革阿里 奶昔
- OpenCV-特征提取与检测(04、亚像素级别角点检测)
- OpenCV-图像处理(27、模板匹配(Template Match))
- C程序设计--文件1--文件的分类+文件的打开和关闭
- iphone数据传输已取消怎么办_消失的3.5mm接口:厂商真好心取消3.5mm接口?其实大家全都是韭菜...
- 数据库删除表中多列语法总结
- java 名称可以包含-吗_java – 验证失败时包含参数名称的自定义...
- auto cad 打印颜色变浅_CAD初学者最容易忽视的CAD打印线宽问题,你“中枪”了吗?...
- 【2019CCPC秦皇岛:A】Angle Beats(离线+斜率Hash+分类讨论)
- C语言打印杨辉三角(C笔记)