第10章 南昌景点介绍 --ListView控件应用

Slides:



Advertisements
Similar presentations

Advertisements

3 的倍数的特征 的倍数有 : 。 5 的倍数有 : 。 既是 2 的倍数又是 5 的倍数有 : 。 12 , 18 , 20 , 48 , 60 , 72 , , 25 , 60 ,
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
2 、 5 的倍数特征 集合 2 的倍数(要求) 在百数表上依次将 2 的倍数找出 并用红色的彩笔涂上颜色。
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
自定义汇总报表 演示 作者:栗川.
實驗五:多媒體播放器選單介面.
Excel VBA视频教程 课程介绍-什么是VBA
UI(用户界面)集训班 Illustrator 高级班.
第14章 c++中的代码重用.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Android开发入门 -----Activity的一生 主讲:何广军
Chapter 6 Advanced UI Design.
Chapter 6 進階UI設計.
第5章 Activity与Intent.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
Hub Web System 主要功能: 1.查询库存(Query Current Storage) 2.创建PL(Create PL) 3.查询、打印PL单(Query & Print PL) 4.查询允交量、在途量 5.修改用户的基本信息(Update Password) 6.查询GR(Query.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
任务1-3 使用Dreamweaver创建ASP网页
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
产品推广 PRODUCT PROMOTION PRESENTED BY OfficePLUS.
顺序表的删除.
第四章 团队音乐会序幕: 团队协作平台的快速创建
VisComposer 2019/4/17.
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
分裂对象模型 C++ otcl.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
Web安全基础教程
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
郑 昀 应用开发事业部 神州泰岳 SIP多方会话消息 之实例讲解 郑 昀 应用开发事业部 神州泰岳
辅导课程十五.
WEB321 使用ASP.NET2.0快速开发电子商务网站
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
多个Activity的使用 本讲大纲: 1、使用Bundle在Activity之间交换数据 2、调用另一个Activity并返回结果
Presentation transcript:

第10章 南昌景点介绍 --ListView控件应用 授课老师:高成珍 QQ号:1281147324 QQ群:287966120、314753495 网络资源:http://10lab.cn/case/resource.html

本章案例效果分析

界面分析 本案例中包含两个界面:一个是用于显示南昌各景点基本信息的主界面;一个是用于显示单个景点详细信息的界面,单击主界面中的某一项后,可以跳转到对应的详细信息界面。 在主页面中,主要包含两个控件,显示标题的TextView以及显示景点信息的ListView。在ListView中,设置了项与项之间的分割线颜色,以及分割线的大小即android:divider和android:dividerHeight属性。列表中每一项又包含三项信息:景点图片、景点名、景点简介,这三项信息整体放在一个水平的线性布局中,其中又嵌套了一个垂直的线性布局,效果如下图所示。

ListView控件 ListView是Android中使用非常广泛的一种控件,它以垂直列表的形式显示所有的列表项。在Android中使用ListView控件与其它控件类似,通常是在布局文件中添加ListView标签,然后在代码中根据ID获取ListView控件,然后即可为其设置数据源,显示数据等。 除此在外,在Android中还专门提供了ListActivity,其内部包含了一个ListView,因此只需要让当前的Activity从ListActivity继承即可获得一个ListView,而不需要布局文件。 获取ListView控件后,关键是为其指定数据源,但ListView本身并不能直接与需要显示的数据源关联,需要借助中介Adapter的协助,然后通过setAdapter()方法将Adapter与列表关联起来。

Adapter层次结构图

Adapter层次结构 Adapter层次结构中比较关键的类就是BaseAdapter类,该类本身是一个抽象类,不能够实例化,开发者只需从该类继承,然后重写里面的抽象方法即可创建自定义Adapter。创建自定义Adapter必须实现如下方法。 getView():返回列表中每一项显示的视图,可以是一个结构复杂的布局对应的View,也可以是简单的控件如TextView; getCount():返回列表中项的个数,根据这个值循环填充列表; getItemId():返回指定项的ID; getItem():返回指定项的对象。 其中getView()方法和getCount()方法最为关键,通过getCount()方法即可知道列表中一共有多少项,然后通过getCount()次循环调用getView()方法,获取每一项数据,并将每一项信息添加到ListView中即可形成包含数据的列表。

SimpleAdapter SimpleAdapter是一个简单而实用的Adapter,它可以将静态的数据关联到XML布局文件中的某个View控件上。通常将静态的数据保存在Map对象的集合中,一个Map对象对应列表中一项所包含的所有数据,通过Map对象中的关键字来区分。本例中一个景点包含四部分数据:景点图片、景点名称、景点简介、景点详情,因此Map对象中包含四个关键字,所有Map对象的集合即组成了整个数据源。 在Map对象中是根据关键字key来唯一确定数据项中每部分所对应的值,在布局文件中通过id来唯一确定单个控件,因此只需要将Map对象的关键字key与布局文件中的控件的id建立一一对应的关系即可保证数据的一致。

SimpleAdapter public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {} 使用SimpleAdapter自定义ListView列表项时需传递5个参数: 参数1:Context对象,通常为当前的Activity对象; 参数2:List<? Extends Map <String,?>>集合对象,该集合中包含了列表中需要显示的所有数据,集合中有多少个元素,列表中就有多少项,每一项数据放在一个Map对象中; 参数3:int类型资源ID,表示列表中每一项对应的布局文件的ID; 参数4:String类型数组,即Map对象中部分关键字组成的数组; 参数5:int类型数组,布局文件中部分控件的ID形成的数组,与参数4存在一一对应的关系,并且控件必须在参数3所指定的布局文件中。

ClipDrawable—图片徐徐展开 ClipDrawable表示从某个位图上截取的一个“图片片段”,通过ClipDrawable实现图片徐徐展开效果的原理是:不断重复截取同一张图片,只是每次截取的片段大小不同,最开始时截取的片段很小,然后不断增大,直到截取整个图片,给人眼的感觉就是徐徐展开。 ClipDrawable对象既可以在代码中创建,也可以在xml文件中定义。在XML文件中使用<clip.../>元素作为根元素,主要包含以下几个属性: android:drawable:指定需要截取的图片对象; android:clipOrientation:指定截取方向:水平或者垂直; android:gravity:指定截取的对齐方式:从左到右,从右到左或者从中间向两边等。

ClipDrawable—图片徐徐展开 直接在代码中创建ClipDrawable对象时, ClipDrawable(Drawable drawable, int gravity, int orientation) 需要传递三个参数: 第一个参数表示需要截取的图片对象; 第二个参数为截取时对齐方式,从左到右还是从右到左等; 第三个参数是截取的方向,水平还是垂直。 使用ClipDrawable对象截取图片时,是通过setLevel(int level)方法来 设置截取的区域大小,当level的值为0时,截取的区域为空;当level为 10000时,截取的就是整张图片了。本例中是启动一个线程,判断是否 截取了整张图片,如果没有则每隔0.3秒发送一次请求,截取图片,每次 截取时,使level的值递增400。

assets与res、res/raw文件夹都用于存放资源文件,那它们之间有什么区别呢? 比较项 assets文件夹 res文件夹 res/raw文件夹 是否在R.java中生成资源标记 否 是 是否能任意创建子文件夹 能 不能 是否会编译成二进制文件 不会 会 是否完全打包到安装文件中 需判断 访问方式 AssetManager类,通过文件流读取 R.XX.XXX引用,通过Resource类相应方法读取 R.raw.xxx引用,通过Resource类相应方法读取

Activity概述 Activity是Android应用中重要组成部分之一,如果把一个Android应用看成是一个网站的话,那么一个Activity就相当于该网站的一个具体网页。Android应用开发的一个重要组成部分就是开发Activity。 Activity是一种应用程序组件,该组件提供了一个屏幕,用户通过 与这个屏幕交互可完成一定的功能,例如打电话,拍照,发送邮件或者 查看地图等。 每一个Activity都提供了一个用于显示它的用户界面的窗口。这个 窗口通常会充满整个屏幕,但有可能比这个屏幕更小或者是漂浮在其他 窗口之上。

Activity概述 应用程序通常由多个彼此之间松耦合的Activity组成。通常,在一个应用程序中,有且仅有一个Activity被指定为主Activity。当应用程序第一次启动的时候,该Activity会显示给用户。 每个Activity都可以启动其它的Activity用于执行不同的操作(功能)。当一个新的Activity启动的时候,先前的那个Activity就会停止,但是系统在堆栈中仍保存该Activity。 当一个新的Activity启动时,它将会被压入栈顶,并获得用户焦点。堆栈遵循后进先出的队列原则,因此,当用户使用完当前的Activity并按Back键时,该Activity将从堆栈中取出(并销毁),然后先前的Activity恢复并获取焦点。

创建和配置Activity 创建自己的Activity需要继承Activity基类,在不同的应用场景下,有时也可继承Activity的子类,例如ListActivity、TabActivity。 创建一个Activity需要实现一个或多个方法,其中最常见的就是实现onCreate(Bundle status)方法,该方法将会在Activity创建时被回调,该方法调用Activity的setContentView(View view)方法来显示要展示的View。 为了管理应用程序界面中的各个控件,可调用Activity的findViewById(int id)方法来获取程序界面中的组件,接下来即可修改该组件的属性和方法以满足我们的需求。 Android应用要求所有应用程序组件(Activity、Service、 ContentProvider、BroadcastReceiver)都必须进行注册。

创建和配置Activity 为<application …/>元素添加<activity…/>子元素即可注册Activity。注册时,主要有以下几个属性: name:指定该Activity的实现类的类名; icon:指定该Activity对应的图标; label:指定该Activity的标签。 配置Activity时通常还可以指定一个或多个<intent-filter…/>元素,该元素用于指定该Activity可响应的条件。 上述配置中,只有name属性是必须的,而其它属性或标签元素都是可选的。

启动Activity 一个Android应用通常都会包含多个Activity,但只有一个Activity会作为程序的入口(当该Android应用运行时将会自动启动并执行该Activity)。而应用中的其他Activity,通常都由入口Activity启动,或由入口Activity启动的Activity启动。 启动其它Activity的方法如下: startActivity(Intent intent):启动其他Activity; startActivityForResult(Intent intent,int requestCode):程序将会得到新启动Activity的结果(通过重写onActivityResult(…)方法来获取),requestCode参数代表启动Activity的请求码。这个请求码的值由开发者根据业务自行设置,用于标识请求来源。

启动Activity 上面两个方法,都需要传入一个Intent类型的参数,该参数是对你 所需要启动的Activity的描述,既可以是一个确切的Activity类,也可 以是所需要启动的Activity的一些特征,然后由系统查找符合该特征 的Activity。 如果有多个Activity符合该要求时,系统将会以下拉列表的形式列出 所有的Activity,然后由用户选择具体启动哪一个,这些Activity既可 以是本应用程序的,也可以是其他应用程序的。

关闭Activity finish():结束当前Activity; finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity。 注意:大部分情况下,不建议显式调用这些方法关闭Activity。因为Android系统会为我们管理Activity的生命周期,调用这些方法可能会影响用户的预期体验。因此,只有当你不想用户再回到当前Activity的时候才去关闭它。

课后思考题 做一做 本例中图片展开的效果是水平的,从中 间开始向两边慢慢展开,请尝试修改代 码,使其从上到下慢慢展开。