天天看點

android問卷分頁顯示,基于Android的問卷調查用戶端題目分頁加載實作.doc

基于Android的問卷調查用戶端題目分頁加載實作.doc

基于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為單選題,則為備選答案視圖對象