android问卷分页显示,基于Android问卷调查客户端题目分页加载实现.doc
基于Android问卷调查客户端题目分页加载实现基于Android问卷调查客户端题目分页加载实现摘 要:本文根据对Android问卷调查客户端问卷题目的分析的结果,设计出题目加载视图的布局,并对题目分页加载的实现提出了详细方案。关键词:Android;问卷调查客户端;分页加载中图分类号:TP311.521 基于Android的问卷调查客户端简介基于Android的问卷调查系统由两个子系统构成,分别
基于Android问卷调查客户端题目分页加载实现
基于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为单选题,则为备选答案视图对象lvChe
更多推荐
所有评论(0)