涂小琴
(云南師范大學(xué)文理學(xué)院,云南 昆明 650222)
目前,市面上較熟悉的題庫(kù)系統(tǒng)是“駕考寶典”類的系統(tǒng),針對(duì)學(xué)生的題庫(kù)系統(tǒng)并不多,針對(duì)在校大學(xué)生考級(jí)的系統(tǒng)也是少之又少。大學(xué)生在校的時(shí)候要面對(duì)很多的考試,如大家都需參加的英語(yǔ)四六級(jí)的考試,計(jì)算機(jī)等級(jí)類的考試,以及各種專業(yè)證書類的考試,考試的題型各有不同,本文就對(duì)經(jīng)常出現(xiàn)的幾種題型進(jìn)行研究,提出幾種題型在Android題庫(kù)中的應(yīng)用方法。
選擇題分為單選題和多選題兩種,實(shí)現(xiàn)的技術(shù)最簡(jiǎn)單的就是用 ListView,ListView中有自帶的單選和多選功能,實(shí)現(xiàn)起來(lái)相當(dāng)?shù)姆奖恪V饕昧薒istView的ListView.CHOICE_MODE_SINGLE和ListView. CHOICE_MODE_MULTIPLE屬性。
單選題只需設(shè)置 ListView.CHOICE_MODE_SINGLE屬性,具體實(shí)現(xiàn)方法如下:


多選題只需設(shè)置 ListView. CHOICE_MODE_MULTIPLE屬性,具體實(shí)現(xiàn)方法如下:

使用 LocalBroadcast可以方便試題界面和答題卡界面的自由跳轉(zhuǎn)填空題的實(shí)現(xiàn)。
判斷題的實(shí)現(xiàn)
判斷題的實(shí)現(xiàn)與單選題有相似之處,只是選項(xiàng)只有兩個(gè),除了與單選題一樣,利用ListView實(shí)現(xiàn)之外,還可以利用單選框RadioGroup來(lái)實(shí)現(xiàn)。
如何獲取填空的焦點(diǎn)?獲取焦點(diǎn)后如何調(diào)用軟鍵盤?
填空題中,填空的預(yù)留長(zhǎng)度應(yīng)該留多少?是否需要固定?
若不固定,后面的文字是否需要后移,若需要,如何移?
對(duì)于填空題,以上三個(gè)問(wèn)題都是在做需求時(shí)需要解決的問(wèn)題。針對(duì)這三個(gè)問(wèn)題,給出具體的解決方案。
對(duì)于第一個(gè)問(wèn)題,在做填空題的時(shí)候,如何獲取所需填空的焦點(diǎn)?獲取焦點(diǎn)很重要,只要獲取了焦點(diǎn)才能將答案填入空格中。解決方法:把需要顯示的內(nèi)容轉(zhuǎn)成SpannableString對(duì)象,通過(guò)ClickableSpan設(shè)置點(diǎn)擊事件,設(shè)置setFocusable為 true來(lái)獲取焦點(diǎn)。焦點(diǎn)獲取后,在點(diǎn)擊處彈出PopupWindow輸入框,輸入答案后點(diǎn)擊確定,調(diào)用 fillAnswer方法將答案設(shè)置到填空處。

針對(duì)第二個(gè)問(wèn)題,關(guān)于 position可以根據(jù)填空題來(lái)定,有設(shè)置答案填寫范圍的,也有可改變長(zhǎng)度的。如設(shè)置范圍 rangeList.add(new AnswerRange(4,20));

另外對(duì)于 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE是指新填入的字符格式的變化情況,可以設(shè)置前面填入的數(shù)據(jù)或后面填入數(shù)據(jù)的變化情況,它是用來(lái)標(biāo)識(shí)在 Span范圍內(nèi)的文本前后輸入新的字符時(shí)是否把它們也應(yīng)用這個(gè)效果。下面給出四種情況:
(1)Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不應(yīng)用設(shè)定的效果);
(2)Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面應(yīng)用設(shè)定的效果,后面不應(yīng)用);
(3)Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不應(yīng)用設(shè)定的效果,后面應(yīng)用);
(4)Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都應(yīng)用設(shè)定的效果)。
針對(duì)第三個(gè)問(wèn)題,若長(zhǎng)度不固定,在超出空格范圍時(shí),如何將后面的文字后移?
解決這個(gè)問(wèn)題可以通過(guò)更新答案的范圍來(lái)進(jìn)行。實(shí)現(xiàn)方法如下

在 Android中要實(shí)現(xiàn)圖文混排的效果,可以有多種方式,下面介紹三種:
(1)在 TextView中使用 Compound Drawable屬性;
(2)在TextView中使用Spannable多樣式顯示;
(3)在TextView中顯示文本,用ImageView顯示圖片。

圖1 圖文混排效果圖Fig.1 Picture and text mixing effect diagram
第三種方式應(yīng)用的較多,若用在題庫(kù)中,通常將圖片所在位置存儲(chǔ)在數(shù)據(jù)庫(kù)中,通過(guò) imageView來(lái)讀取圖片。關(guān)鍵代碼如下:
holder.timu = (TextView)convertView.findViewById(R.id.timu); //用TextView讀取題目
holder.fujian = (ImageView)convertView.findView ById(R.id.fujian); //用ImageView來(lái)讀取圖片,效果如圖1所示。
文中通過(guò)對(duì)不同題型的分析,給出不同題型在Android題庫(kù)中的解決辦法,解決問(wèn)題的方法有很多種,并不局限我在文中提到的這些,在遇到問(wèn)題的過(guò)程中,可以通過(guò)不斷的嘗試來(lái)找出新的方法。隨著技術(shù)的更新,實(shí)現(xiàn)的方法也會(huì)隨著更新。
[1] 艾小芹. 基于Android的英語(yǔ)學(xué)習(xí)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子設(shè)計(jì)工程, 2016(17): 73-76.
[2] 徐毅, 田春燕. 基于Android的移動(dòng)英語(yǔ)學(xué)習(xí)平臺(tái)的研究與實(shí)現(xiàn)[J]. 中國(guó)教育信息化, 2014(4): 89-91.
[3] 付婷婷. 基于Android的移動(dòng)學(xué)習(xí)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].貴州大學(xué)碩士論文, 2016-6.
[4] 馬宏茹. 基于Android平臺(tái)的中小學(xué)試題庫(kù)系統(tǒng)的建設(shè)[J].軟件工程師, 2015(18): 24-24.
[5] 萬(wàn)遠(yuǎn)輝. 基于Android平臺(tái)的移動(dòng)學(xué)習(xí)管理系統(tǒng)的研究與設(shè)計(jì)[D]. 江西財(cái)經(jīng)大學(xué)碩士論文, 2016-6.
[6] 陳麗丹, 梁明杰. 課程試題庫(kù)APP應(yīng)用程序的設(shè)計(jì)[J]. 電氣電子教學(xué)學(xué)報(bào), 2016(8): 79-81.
[7] 宋志超. 面向移動(dòng)終端用戶的題目推薦與練習(xí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 內(nèi)蒙古大學(xué)碩士論文, 2017-6.