Android 小应用 - "Smart Help" 之模块介绍

前面介绍了整个应用的框架,下面接着继续介绍各模块设计的细节。

一.“交通篇”

  

上面三幅图基本上就是交通版块所包含的内容了,其中,图二、三只涉及 Android 基本的控件 ExpandableListView 的使用,这里不作具体的讲解,我们重点来看图一的实现。

1. 输入框是什么控件?

为了达到提示用户输入的效果,这里不能使用最普遍的 EditText 作为输入框,Android 为我们提供了一个自动展示下拉提示列表的输入控件 "AutoCompleteTextView",在这里使用最好不过了。

2. 控件有了,那么我们需要显示什么数据内容到控件的列表呢?当然是匹配到用户输入地点的上车点的名称集合。

3. 接着上面的疑问,我们下面讲解匹配用户输入地点名称的规则和算法。

- 首先,一个地方,比如“东圃镇”,往往有不同的几个上车地点(如图一所示),考虑到用户输入的时候第一反应是输入一个地名,所以这里的匹配规则是按照地名,如“天河区东圃镇”来进行模糊匹配该地方存在的所有上车点,然后以 Adapter 的形式传递给输入框,展示给用户看。

- 其次,关于模糊匹配的算法实现,学过数据库就知道,有根据一个字符串来模糊查询数据库的命令,关键字是 "where *** like ****":

<span style="font-size:14px;">Cursor mCursor = db.rawQuery("select * from " + tableName + " where " + "stop_name" + " like '%" + shortName + "%' and first=1 " + "or location like '%" + shortName + "%' and first=1 ",null);</span>

那么问题就来了,我需要将查询结果以 Adapter 的形式传递给 "AutoCompleteTextView",但一个普通的 Adapter,要怎么跟查询数据库所返回的 Cursor 来进行关联呢?

Android 给我们提供了一个Adapter类,叫 "SimpleCursorAdapter ",专用于数据绑定,也就是说用它可以跟数据库的 Cursor 进行直接的关联。

4. 上面我们解决了用户从输入地名,到接收到自动提示上下车地点,再到选取需要的地点,这几个问题,那么,用户选取到指定地点后,点击班车搜索,又是如何进行班车路线匹配的呢?

我想,如果仔细看明白了第3点关于数据库模糊匹配的方法后,这个就已然不是问题了,因为模糊匹配都有了,自然也有精确匹配。在此就不赘述了。

5. 关于加入“公交”线路查询的功能,当初也进行了一些思想的挣扎,比较现在绝大多数人的手机都有安装百度地图等查询工具,会不会多次一举?

最后考虑到毕竟有时候用户打开了这个应用,如果突然想搜索公交的线路,此时提供这么个入口,岂不就不用再麻烦的退出,再进入百度地图?万一用户的手机刚好没安装百度地图呢?带着这样的想法,于是就添加了这个功能。

话又说回来,其实“公交”查询的入口,就是调用了百度Map开放平台提供的第三方接口,具体的实现比较简单,有兴趣的朋友可以直接百度一下,也不赘述。

至此,就把“交通篇”的一些技术实现方法简要的介绍完了,其实回过头来看,并不会那么的困难,很多都是一些现成的基本的技术点,只是把他们结合在一起使用罢了。

下一篇,将介绍“美食篇”的内容。

时间: 2024-11-10 07:16:02

Android 小应用 - "Smart Help" 之模块介绍的相关文章

Ansible 自动化运维工具之inventory和常用模块介绍

一.inventory介绍 前面我们介绍过ansible的hosts文件是存放被管理主机的,被管理主机比较少的情况下,直接在hosts中定义即可,但是以后很定会管理多台主机,而ansible可管理的主机集合就叫做inventory.在ansible中,描述你主机的默认方法是将它们列在一个文本文件中,这个文件叫inventory文件. 一个简单的inventory文件可能只包含一组主机名的列表,如下: ftp.testansible.com samba.testansible.com mail.t

Ansible的安装、配置及常用模块介绍

Ansible的安装.配置及常用模块介绍 ansible安装方式 1. ansible安装常用两种方式,yum安装和pip程序安装 这里提供二种安装方式,任选一种即可: 1.使用yum安装 yum install epel-release -y yum install ansible –y 2. 使用pip(python的包管理模块)安装 pip install ansible   #如果没pip,需先安装pip.yum可直接安装: yum install python-pip pip inst

Android学习之 换肤功能模块的实现&lt;二&gt;

在上篇中 主要有学习到皮肤资源内置到应用程序中 的方式实现换肤的 基本思路,本篇将继续以上篇的思路学习 皮肤资源内置的方式实现换肤效果.但本篇侧重于应用中换肤功能的代码设计实现上!切换的皮肤资源位于assets下不同的皮肤资源文件夹中. 本篇demo程序的代码结构如下: 本篇实现换肤功能的代码设计 UML类图如下: 本篇demo的换肤效果如下:               主要的实现代码在于: 1.SkinConfigManager.java 作用:皮肤配置管理,封装了SharedPrefere

Android学习之 换肤功能模块的实现&amp;lt;二&amp;gt;

在上篇中 主要有学习到皮肤资源内置到应用程序中 的方式实现换肤的 基本思路,本篇将继续以上篇的思路学习 皮肤资源内置的方式实现换肤效果.但本篇側重于应用中换肤功能的代码设计实现上.切换的皮肤资源位于assets下不同的皮肤资源目录中. 本篇demo程序的代码结构例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFuaWNlMDUyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissol

【Java/Android性能优3】Android性能调优工具TraceView使用介绍

本文转自:http://blog.csdn.net/innost/article/details/9008691 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是: 测评:对系统进行大量有针对性的测试,以得到合适的测试数据. 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck). 性能优化:对hotspot相关的代码进行优化. 由上述步骤可知,性能优化的目标对象是hotspot.如果找到的hotspot并非真正的热点,则性能优

Nginx核心流程及模块介绍

Nginx核心流程及模块介绍 1. Nginx简介以及特点 Nginx简介: Nginx (engine x) 是一个高性能的web服务器和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 俄罗斯程序员Igor Sysoev于2002年开始 Nginx是增长最快的Web服务器,市场份额已达33.3% 全球使用量排名第二2011年成立商业公司 Nginx社区分支: Openresty作者@agentzh(章宜春)开发的,最大特点是引入了ngx_lua模块,支持使用lua开发插件,并且集合

Some标准模块介绍

IEEE 802.11 无线局域网概述 无线局域网的协议行为建模 IEEE 802.11 无线局域网 MAC 的输入接口 输入接口参数描述如下: Physical Characteristics 物理特征: Rts Threshold (Rts 门限) -- -- X.25模块介绍 OPNET 自带的 X.25 协议模块有:网络层模块( x25_dte_root. x25_dte_chan. x25_dce_root和 x25_dce_chan)和物理层模块( Lapb).基于 X.25 协议的

第三百二十四节,web爬虫,scrapy模块介绍与使用

第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy 使用了 Twisted异步网络库来处理网络通讯.

网上图书商城项目学习笔记-031图书管理模块介绍及添加图书

一.流程分析 1.图书管理模块介绍 2. 3. 4.添加图书第一步 5.添加图书第二步 二.代码 1.view层 (1)body.jsp 1 <body> 2 <h1 align="center">图书管理</h1> 3 <p align="center"> 4 <a href="<c:url value='/admin/AdminBookServlet?method=addPre'/>&q