基于Android的问卷调查客户端题目分页加载实现

时间:2022-09-20 03:45:56

基于Android的问卷调查客户端题目分页加载实现

摘 要:本文根据对Android问卷调查客户端问卷题目的分析的结果,设计出题目加载视图的布局,并对题目分页加载的实现提出了详细方案。

关键词:Android;问卷调查客户端;分页加载

中图分类号:TP311.52

1 基于Android的问卷调查客户端简介

基于Android的问卷调查系统由两个子系统构成,分别为基于Windows的问卷设计子系统和基于Android的调查客户端子系统。两端的问卷数据接口使用XML标准数据文件。基于Android的问卷调查客户端核心模块为问卷问题的分页加载。

2 问卷视图的布局分析

问题的加载用到多个视图布局的嵌套。questionActivity下的问题列表视图需要一个布局,问题列表视图下选择题的备选答案列表又需要一个布局,备选答案列表中答案项根据单选或多选又需要不同的答案项布局。列表嵌套布局如图1所示。

3 问题分页加载显示实现主流程

问卷问题分页加载显示程序实现主流程如下所述:

(1)在questionActivity问卷界面类下将XML问卷数据解析到paper问卷对象中。

(2)questionActivity获得paper对象后调用GetPaperCount方法,根据问卷各问题的分页索引获取到问题分页总页数。

(3)当要加载显示某页对应的问题列表时,通过调用titleAdaper适配器对象的方法getPageQuestionList,传入当前页码获取到当前页的问题对象列表questionPageList。

(4)在questionActivity对应的问题列表视图适配器类titleAdapter继承自BaseAdapter适配器基类。在titleAdapter下重写getCount、getItem、getItemId、GetView系列方法,使getCount返回questionPageList列表的长度,getItem获取当前position的问题对象,getItemId返回当前position(位置)值。GetView方法在questionActivity对应的列表视图(ListView)对象的请求下每次自动得到一个position的问题的视图。如果问题列表questionPageList长度为N,则GetView被自动请求N次获得questionPageList列表的所有问题视图给questionActivity视图对象。

4 分页计算

GetPaperCount方法用于根据问卷对象paper下的问题列表各问题的分页索引index计算总页数。根据用户需求,问题列表各问题在哪一页,由问卷设计员设计问卷时来设置。假设某问题在第N页,分页索引应该设置为(N-1)×100到(N-1)×200-1之内。比如某问题在第2页,其索引值应为100到199之间的值。

由此可见,GetPaperCount方法获取总页数算法实现流程如下所述:

(1)设置最大索引变量maxIndex,初始化为0。并循环遍历paper问卷对象下的问题列表,获取所有问题的最大索引值到maxIndex。

(2)遍历结束后,计算总页数为:count=(int)(maxIndex/100)+1。

5 根据当前页码获取问题列表

getPageQuestionList方法用于根据当前页码获取问题列表。本方法根据传入的页码计算出问题的对应的索引范围,遍历paper对象问题列表的所有问题,获取到问题分页索引处于该索引范围的问题对象并添加到分页问题列表questionPageList中。

questionActivity对应的问题列表视图数据适配器类titleAdapter中的GetView方法的运行机制在前面已经做过叙述。GetView方法单次获取问题对象视图实现流程如下所述:

(1)GetView方法得到questionActivity问题列表视图quelist一次视图请求即获取到请求位置position。

(2)获取分页问题列表questionPageList当前position下的问题对象question。

(3)从单个问题显示的布局文件question_item.xml中获取用于显示问题内容的TextView对象txtTitle和用于显示选择题备选答案列表或问答题文本编辑框的ListView对象lvChecks。

(4)获取question对象的_qTitle(问题标题)字段的值加载到txtTitle。

(5)获取question对象的_qType(问题类型)字段并判断。如果_qType为单选题,则为备选答案视图对象lvChecks创建数据适配器ArrayAdapter类的对象adapter。在数据适配器中调用GetQuestionAnswers方法获取到当前问题的备选答案字符串数组加载。适配器加载的每项备选答案为单选题单个备选答案布局文件。设置adapter为lvChecks的数据适配器。设置lvChecks备选答案列表的选择模式为单选。最后调用loadQuestionAnswers方法向lvChecks加载显示默认答案的选中状态。

(6)如果_qType为多选题,流程与单选题类似。不同之处在于备选答案项对应的布局文件为适配器加载的每项备选答案对应的多选题备选答案布局文件,lvChecks备选答案列表的选择模式为多选。

(7)如果_qType为问答题,则为答案视图对象lvChecks创建数据适配器TextQuestionAdapter类的对象adapter。在数据适配器GetView中创建文本编辑框控件对象txtedit,并根据对象question的答案数据类型点击文本框时加载不同的输入法。设置adapter为lvChecks的数据适配器。

6 总结

基于Android的调查客户端问卷问题分页加载显示的实现复杂在多个视图布局的嵌套,问卷问题列表需要列表视图布局显示,问题备选答案列表也需要列表视图布局显示,而单选、多选题目的备选答案项又需要不同的布局。

参考文献:

[1]张旭.电信运营商空中营业厅系统客户端的研究与设计[J].计算机光盘软件与应用,2012,13:185-186.

[2]平.Spring软件开发框架新组件探讨[J].计算机光盘软件与应用,2013,12:61-62.

[3]狄荣.基于Android的进销存系统的设计与实现[J].计算机光盘软件与应用,2013,06:130-131.

作者简介:顾东虎(1980.8-),男,山西大同人,硕士,讲师,工程师职称,主要研究方向:软件工程、嵌入式系统及数据存储;李红育(1983.2-),男,河南新郑人,硕士,讲师,工程师职称,主要研究方向:软件工程、嵌入式数据存储。

作者单位:云南工商学院,昆明 651700

上一篇:知识点融合在《计算机组成原理》课程教学中应... 下一篇:勤勉严谨做学问 躬耕环境凝硕果