2018年
软      件
2018, V ol. 39, No. 3
基金项目: 云南省教育厅科学研究基金项目(No: 2016ZDX253)
作者简介: 涂小琴(1981-),女,讲师,研究方向为软件工程及数据分析。
Android 题库系统中多种题型的设计与实现
涂小琴
(云南师范大学文理学院,云南 昆明  650222)
摘  要: 【目的】针对不同的科目,有不同的题目类型,对图片的要求也不相同,为了将题库系统设计成可以
适合多个学科的平台,特对多种题型进行研究。【方法】借助Android 平台,对不同的题型给出了解决的方法。【结果】给出了不同题型在Android 题库中的实现方法。【结论】本文旨在将各种方法应用于题库系统中,以出最佳的显示方法,让题库系统可以适应更多的学科,为其它类别的考试题库系统提供了一个框架,以及一个可以参考的模板与依据。
关键词: 题库;Android 系统;题型;图文混排
中图分类号: TP310    文献标识码: A    DOI :10.3969/j.issn.1003-6970.2018.03.017
本文著录格式:涂小琴. Android 题库系统中多种题型的设计与实现[J]. 软件,2018,39(3):77-79
Design and Implementation of Various Types of Questions in the Android Database System
TU Xiao-qin
(The College Of Arts And Sciences YunNan Normal University Yunnan Kunming 650222)
【Abstract 】: Different subjects have different types of topics, The requirements for pictures are different, In order to design the question bank system as a platform suitable for many subjects, a variety of topics are studied. With the help of the Android platform, the methods for solving different types of questions are given. The implementa-tion of different types of questions in the Android library is given. The aim of this paper is to apply various methods to the question bank system to find out the best method of display, Let the question bank system adapt to more disciplines. It provides a framework for other categories of exam question library systems, as well as a tem-plate and basis for reference.
【Key words 】: Question bank; Android system; Type; Graphic mixed arrangement
0  引言
目前,市面上较熟悉的题库系统是“驾考宝典”类的系统,针对学生的题库系统并不多,针对在校大学生考级的系统也是少之又少。大学生在校的时候要面对很多的考试,如大家都需参加的英语四六级的考试,计算机等级类的考试,以及各种专业证书类的考试,考试的题型各有不同,本文就对经常出现的几种题型进行研究,提出几种题型在Android 题库中的应用方法。
1  选择题、判断题的实现
选择题分为单选题和多选题两种,实现的技术
最简单的就是用ListView ,ListView 中有自带的单选和多选功能,实现起来相当的方便。主要利用了ListView 的ListView.CHOICE_MODE_SINGLE 和ListView. CHOICE_MODE_MULTIPLE 属性。
1.1  单选题的实现
单选题只需设置ListView.CHOICE_MODE_ SINGLE 属性,具体实现方法如下:
public class SingleChoiceList extends  ListActivity {
public void onCreate(Bundle savedInstanceState) {    Create(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,        android.R.layout.simple_list_item_single_c hoice, GENRES));
第39卷  第3期    软    件
78
《软件》杂志欢迎推荐投稿:cosoft@vip.163
final ListView listView = getListView();    listView.setItemsCanFocus(false);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);//添加这一句话,就实现单选功能
}
1.2  多选题的实现
多选题只需设置ListView. CHOICE_MODE_ MULTIPLE 属性,具体实现方法如下:
public class SingleChoiceList extends
ListActivity {
public void onCreate(Bundle savedInstanceState) {  Create(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this,        android.R.layout.simple_list_item_single_c hoice, GENRES));
final ListView listView = getListView(); listView.setItemsCanFocus(false);
listView.setChoiceMode(ListView.CHOICE_ MODE_MULTIPLE);//添加这一句话,就实现多选功能
}
使用LocalBroadcast 可以方便试题界面和答题卡界面的自由跳转填空题的实现。
判断题的实现
判断题的实现与单选题有相似之处,只是选项只有两个,除了与单选题一样,利用ListView 实现之外,还可以利用单选框RadioGroup 来实现。
2  填空题的实现
2.1  常见问题
如何获取填空的焦点?获取焦点后如何调用软键盘?
填空题中,填空的预留长度应该留多少?是否需要固定?
若不固定,后面的文字是否需要后移,若需要,如何移?
对于填空题,以上三个问题都是在做需求时需要解决的问题。针对这三个问题,给出具体的解决方案。
2.2  解决办法
对于第一个问题,在做填空题的时候,如何获取所需填空的焦点?获取焦点很重要,只要获取了焦点才能将答案填入空格中。解决方法:把需要显示的内容转成SpannableString 对象,通过ClickableSpan
设置点击事件,设置setFocusable 为true 来获取焦点。焦点获取后,在点击处弹出PopupWindow 输入框,输入答案后点击确定,调用fillAnswer 方法将答案设置到填空处。安卓课程设计题目
public void onClick(View v) {      String answer = Text(). toString();      fillAnswer(answer, position);        popupWindow.dismiss();            }
针对第二个问题,关于position 可以根据填空题来定,有设置答案填写范围的,也有可改变长度的。如设置范围rangeList.add(new AnswerRange(4, 20));
answerList = new ArrayList<>();
for (int i = 0; i < rangeList.size(); i++) {        answerList.add(""); }
for (int i = 0; i < rangeList.size(); i++) {
AnswerRange range = (i);        BlankClickableSpan blankClickableSpan = new BlankClickableSpan(i);
content.setSpan(blankClickableSpan, range.start, d, Spanned.SPAN_EXCLUSIVE_ EXCLUSIVE);
}
另外对于Spanned.SPAN_EXCLUSIVE_EXCLU-SIVE 是指新填入的字符格式的变化情况,可以设置前面填入的数据或后面填入数据的变化情况,它是用来标识在Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。下面给出四种情况:
(1)Spanned.SPAN_EXCLUSIVE_EXCLUSIVE (前后都不应用设定的效果);
(2)Spanned.SPAN_INCLUSIVE_EXCLUSIVE (前面应用设定的效果,后面不应用);
(3)Spanned.SPAN_EXCLUSIVE_INCLUSIVE (前面不应用设定的效果,后面应用);
(4)Spanned.SPAN_INCLUSIVE_INCLUSIVE (前后都应用设定的效果)。
针对第三个问题,若长度不固定,在超出空格范围时,如何将后面的文字后移?
解决这个问题可以通过更新答案的范围来进行。实现方法如下
AnswerRange currentRange = new Answer-Range(range.start, range.start + answer.length());
rangeList.set(position, currentRange);
涂小琴:Android 题库系统中多种题型的设计与实现
79 《软件》杂志欢迎推荐投稿:cosoft@vip.163
3  图文混排的实现
在Android 中要实现图文混排的效果,可以有多种方式,下面介绍三种:
(1)在TextView 中使用Compound Drawable 属性;
(2)在TextView 中使用Spannable 多样式显示; (3)在TextView 中显示文本,用ImageView 显示图片。
图1  图文混排效果图
Fig.1  Picture and text mixing effect diagram
第三种方式应用的较多,若用在题库中,通常将图片所在位置存储在数据库中,通过imageView
来读取图片。关键代码如下:
holder.timu = (TextView)convertView.findViewById  (R.id.timu); //用TextView 读取题目
holder.fujian = (ImageView)convertView.findView ById(R.id.fujian); //用ImageView 来读取图片,效果如图1所示。
4  结论
文中通过对不同题型的分析,给出不同题型在Android 题库中的解决办法,解决问题的方法有很多种,并不局限我在文中提到的这些,在遇到问题的过程中,可以通过不断的尝试来出新的方法。随着技术的更新,实现的方法也会随着更新。
参考文献
[1]
艾小芹. 基于Android 的英语学习系统设计与实现[J]. 电子设计工程, 2016(17): 73-76. [2]
徐毅, 田春燕. 基于Android 的移动英语学习平台的研究与实现[J]. 中国教育信息化, 2014(4): 89-91. [3]
付婷婷. 基于Android 的移动学习平台的设计与实现[D]. 贵州大学硕士论文, 2016-6. [4]
马宏茹. 基于Android 平台的中小学试题库系统的建设[J].软件工程师, 2015(18): 24-24.
[5] 万远辉. 基于Android 平台的移动学习管理系统的研究与设计[D]. 江西财经大学硕士论文, 2016-6.
[6]
陈丽丹, 梁明杰. 课程试题库APP 应用程序的设计[J]. 电气电子教学学报, 2016(8): 79-81.
[7] 宋志超. 面向移动终端用户的题目推荐与练习系统的设计与实现[D]. 内蒙古大学硕士论文, 2017-6.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。