Android UI 設計(12):ListView 練習(製作水果選擇選單)

發表於2015-10-12

功能說明:

通過使用ListView製作一個水果選擇選單,選單中有多種水果,選單每種水果以水果選擇框, 水果圖片, 水果名稱的形式展現在ListView中的每個Item中。

1. 通過水果多選框可以選擇想要的水果。
2. 通過點選每條Item的任意地方也可以選擇水果。
3. ListView最頂端設定有頂部全選按鈕,通過點選按鈕可以全部選中水果。
4. ListView最低端設定有底部反選按鈕,通過點選按鈕可以反選水果。

這只是一個簡單的小練習,介面比較簡單粗略,僅用來練習使用,大神們不要嫌棄……嘿嘿

Frist.顯示列表的實現

做什麼都是一步一步來的,首先我們要先構建顯示列表,這就要用到我們在前一節所用到的自定義Adapter,通過自定義Adapter來構建顯示列表。
回想一下自定義Adapter的步驟:

  • M,即Model。構建資料。首先我們要先建立顯示在水果選單上的水果資料。定義一個Fruit類。

  • V,即View。構建資料顯示的檢視。我們是以什麼樣的形式來顯示Fruit的。然後自定義一個Adapter,通過自定義的Adapter將水果資料新增到View檢視中。這裡我們用下圖方式來構建View檢視,也就是水果顯示的方式。佈局檔案就不在貼出,在最後會給出原始碼。

    10-12-3

    自定義的Adapter:

– C,即Control。控制總體,首先初始化資料,然後將自己設定好的View新增到ListView中。

Activity中的佈局:

Activity類:

結果:

10-12-4

Two.選擇框選擇水果功能的實現

第一步我們已經完成了基本的顯示功能。讓我們來新增第二個功能。通過點選水果圖片前面的選擇框來中水果。這就用到了CheckBox的點選事件。我們通過監聽選擇框的狀態來斷定選擇的水果。

對自定義Adapter 修改如下(在getView()方法中新增店家事件。)

結果:
10-12-4

Three.點選Item任意處選擇水果功能的實現

這個功能是很常見的,舉例來說,我們逛淘寶,商品的展示就是用ListView控制元件來實現的,我們有時候想要進入某個商品的具體介面只需點選Item的任意一個位置就可以。我們現在就要實現這個功能。
實現這個功能前我們首先要了解一個知識點,當在一個Button上放置一個CheckBox,RadioButton或者其他按鈕時,Button的點選就會被其上面的CheckBox,RadioButton或者其他按鈕給“吃掉”。當我們點選螢幕時,是螢幕首先接收到這個點選事件,然後他會將這個點選事件通過硬體等一系列傳送後報給View,然後View再將點選事件報給在頂端的CheckBox,RadioButton或者其他按鈕,當頂端的CheckBox,RadioButton或者其他按鈕接收到以後,一看不是自己的點選事件,就會將其給吃掉,不做任何反應,以至於點選底端的Button並沒有反應。
解決此問題首先要讓頂端的CheckBox,RadioButton或者其他按鈕“不吃掉”底端按鈕的點選,這是需要在CheckBox佈局檔案中新增如下語句:

在Activity新增ListView的點選事件,在onCreate中新增如下:

將ListView的點選與CheckBox相關聯,在自定義Adapter中新增如下方法:

結果:

10-12-6

Four.頂部按鈕全選的實現

這裡用到了ListView的一個功能:新增Header,在ListView的頂端新增布局。這裡我們實現的功能是新增頂部按鈕,所以我們只需要在頂端佈局中新增一個按鈕即可。

頂部佈局:

自定義Adapter中新增全選操作:

Activity中新增:

結果:
10-12-7

Four.底部按鈕反選的實現

這個和頂部按鈕全選是先是相同的,只是實現的功能不同,此處不再贅述,直接上程式碼。

底部佈局:

自定義Adapter中新增全選操作:

Activity中新增:

結果:

10-12-8

相關文章