设为首页 加入收藏

TOP

Android Smart Dict - 单词导入 - 词汇表解析
2014-11-24 08:34:49 来源: 作者: 【 】 浏览:0
Tags:Android Smart Dict 单词 导入 词汇 解析

有了一个可以用的文件浏览器之后,我们就可以选择并且得到要加载的词汇表文件。当用户点击了某一个词汇表文件之后,浏览器把此文件返回给词汇表解析器,解析出每一个单词,然后插入数据表。


如何解析?为了不在这一部分花费掉太多的时间,我只需要做简单的格式定制和解析就好,后面再做性能上面的优化工作。


在其他地方kiang到一个词汇表,格式很简单,就像这样:


-------------------------------------------------------------------------


ability [4'biliti]
n. (U)能力,本领;(C)才能,才智


-------------------------------------------------------------------------


有人一定发现了,音标没显示对,是的,我们后面再来处理这些细节问题。


我现在只需要提取三部分出来就可以了,本来也就只有三部分:单词,音标,解释。了便于显示信息给用户,我在文件前面加入一个header,来描述一下这个词汇表的名称和单词数量。用两个关键字来定义开始和结束。类似xml文件的方式,注意是类似,并不完全一致。在这里,我只是为了解析的方便。


-------------------------------------------------------------------------



三个英语词汇
3



ability [4'biliti]
n. (U)能力,本领;(C)才能,才智



ability [4'biliti]
n. (U)能力,本领;(C)才能,才智

able ['eib4l]
adj. 能够…的,有能力的



-------------------------------------------------------------------------


header的名称叫“三个英语词汇”,单词数量是3个,单词部分用包围起来,单词之间用空行隔开。这样够简单了吧,哈哈哈!


我定义一个叫BookParser的类,就负责解析这词库文件,它有一个公开的方法叫getNextWord()返回解析出来的单词对象。


代码如下:



这个一定要注意一点,文件存储为上面格式,在构造Reader的时候就要相应地注明以什么格式读取,比如我的是UTF-8格式。



接着我需要用一个类来驱动解析,一个叫BookLoader的类,继承Thread驱动整个解析过程。


它内部有一个Listener,提供一些有用的回调方法。



onStart():就是在解析开始之前调用,这里面可以弹出一些dialog显示一些相关信息。


onLoadHeader():这个方法是当解析完header之后,返回给调用者关于词库的信息,可以反馈给用户。


onComplete():这个很明显,在整个load完成以后调用,参数state用来提示状态,成功,还是取消还是出错。


onLoadWord():这个方法在每次load一个单词的时候调用,可以用来即时反馈用户目前在load那个单词。


这些方法都是用在UI里边给用户提示相关信息。


代码如下:



为了让UI线程能够即时地显示最新状态,必须在while循环里面每次sleep几毫秒,不然UI的显示就会stutter。


现在来看看我在Activity里边做了什么。


主要就是实现OnBookLoadListener这个接口,开始load的时候弹出dialog,当header解析出来以后,显示词库的名称,单词数量,每次load一个单词就相应地显示到dialog里面,完成load以后显示结果信息。


代码如下:



OK,来看看效果如何:



还行,只是load速度比较慢,因为我们是一条一条地insert所以会很慢,后面我会考虑用transaction来做,这样整个过程就会快很多。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android Smart Dict - 单词导入 -.. 下一篇Android Smart Dict - 查询界面

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)
·想要自学数据分析, (2025-12-27 02:49:14)
·Java 集合框架 - 菜 (2025-12-27 02:19:36)
·Java集合框架最全详 (2025-12-27 02:19:33)