iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Mobile Development

Android 口罩地圖入門實戰 30 天 (使用 Kotlin 程式語言)系列 第 20

Day 20:縣市鄉鎮小工具包(util)

本篇文章同步發表在 HKT 線上教室 部落格,線上影音教學課程已上架至 UdemyYoutube 頻道。另外,想追蹤更多相關技術資訊,歡迎到 臉書粉絲專頁 按讚追蹤喔~

在之前的課程當中,我們介紹了 Kotlin 標準函式庫中,所提供過濾(filter)與分組(group)語法,即時篩選出當下回傳縣市與鄉鎮資料。但實際在應用時,我們其實可以將縣市與鄉鎮資料寫成一個共用的方法,因為縣市與鄉鎮資料,不會隨時隨刻一直在變,所以可以寫成固定資料(死資料、Hardcode),當資料有變動時,我們在手動進行調整即可,這樣可以大幅減少不必要的解析資料時間與提高裝置運行的效能。

通常此類命名上,我們習慣會在用途的最後加上 util。例如:DeviceUtil、MathUtil...等。其中 util 是 utiliy 的縮寫,意指為常用或共用的程式方法函數。所以這次「縣市鄉鎮小工具包」,KT 將它命名為 CountyUtil。

CountyUtil

此縣市鄉鎮資料,是根據 口罩資料 透過 kotlin 分組(groupBy)語法,取出各縣市與鄉鎮資料。再根據集合資料 listOf 的方式,將資料分別組成 counties 與 towns。

object CountyUtil {
    private val counties = listOf(
        "基隆市", "臺北市", "新北市",
        "桃園市", "新竹市", "新竹縣",
        "苗栗縣", "臺中市", "彰化縣",
        "南投縣", "雲林縣", "嘉義市",
        "嘉義縣", "臺南市", "高雄市",
        "屏東縣", "臺東縣", "花蓮縣",
        "宜蘭縣", "澎湖縣", "金門縣",
        "連江縣"
    )
    private val towns =
        listOf(
            //基隆市
            listOf(
                "中正區",
                "七堵區",
                "暖暖區",
                "信義區",
                "仁愛區",
                "中山區",
                "安樂區"
            ),
            //臺北市
            listOf(
                "北投區",
                "中山區",
                "信義區",
                "士林區",
                "大安區",
                "大同區",
                "文山區",
                "萬華區",
                "南港區",
                "松山區",
                "中正區",
                "內湖區"
            ),
            //新北市
            listOf(
                "三峽區",
                "淡水區",
                "新店區",
                "三重區",
                "板橋區",
                "汐止區",
                "新莊區",
                "中和區",
                "林口區",
                "石門區",
                "雙溪區",
                "金山區",
                "永和區",
                "五股區",
                "樹林區",
                "泰山區",
                "土城區",
                "鶯歌區",
                "蘆洲區",
                "瑞芳區",
                "三芝區",
                "石碇區",
                "八里區",
                "深坑區",
                "坪林區",
                "平溪區",
                "貢寮區",
                "萬里區",
                "烏來區"
            ),
            //桃園市
            listOf(
                "龜山區",
                "八德區",
                "蘆竹區",
                "大園區",
                "新屋區",
                "觀音區",
                "龍潭區",
                "平鎮區",
                "中壢區",
                "桃園區",
                "楊梅區",
                "大溪區",
                "復興區"
            ),
            //新竹市
            listOf(
                "東區",
                "北區",
                "香山區"
            ),
            //新竹縣
            listOf(
                "新豐鄉",
                "芎林鄉",
                "竹北市",
                "湖口鄉",
                "關西鎮",
                "新埔鎮",
                "竹東鎮",
                "尖石鄉",
                "寶山鄉",
                "北埔鄉",
                "橫山鄉",
                "峨眉鄉",
                "五峰鄉"
            ),
            //苗栗縣
            listOf(
                "苗栗市",
                "卓蘭鎮",
                "大湖鄉",
                "公館鄉",
                "銅鑼鄉",
                "頭屋鄉",
                "三義鄉",
                "三灣鄉",
                "竹南鎮",
                "頭份市",
                "後龍鎮",
                "苑裡鎮",
                "通霄鎮",
                "西湖鄉",
                "南庄鄉",
                "造橋鄉",
                "獅潭鄉",
                "泰安鄉"
            ),
            //臺中市
            listOf(
                "梧棲區",
                "東勢區",
                "大甲區",
                "豐原區",
                "太平區",
                "大里區",
                "龍井區",
                "霧峰區",
                "大雅區",
                "石岡區",
                "烏日區",
                "大肚區",
                "后里區",
                "神岡區",
                "潭子區",
                "清水區",
                "沙鹿區",
                "北區",
                "南區",
                "西區",
                "北屯區",
                "南屯區",
                "東區",
                "西屯區",
                "中區",
                "新社區",
                "和平區",
                "外埔區",
                "大安區"
            ),
            //彰化縣
            listOf(
                "和美鎮",
                "北斗鎮",
                "彰化市",
                "鹿港鎮",
                "社頭鄉",
                "二水鄉",
                "埤頭鄉",
                "芳苑鄉",
                "溪州鄉",
                "秀水鄉",
                "花壇鄉",
                "芬園鄉",
                "大村鄉",
                "埔心鄉",
                "永靖鄉",
                "溪湖鎮",
                "田中鎮",
                "二林鎮",
                "福興鄉",
                "員林市",
                "田尾鄉",
                "線西鄉",
                "伸港鄉",
                "埔鹽鄉",
                "竹塘鄉",
                "大城鄉"
            ),

            //南投縣
            listOf(
                "南投市",
                "埔里鎮",
                "草屯鎮",
                "仁愛鄉",
                "竹山鎮",
                "名間鄉",
                "國姓鄉",
                "水里鄉",
                "魚池鄉",
                "集集鎮",
                "中寮鄉",
                "鹿谷鄉",
                "信義鄉"
            ),
            //雲林縣
            listOf(
                "斗南鎮",
                "口湖鄉",
                "斗六市",
                "水林鄉",
                "麥寮鄉",
                "東勢鄉",
                "褒忠鄉",
                "元長鄉",
                "四湖鄉",
                "古坑鄉",
                "大埤鄉",
                "莿桐鄉",
                "林內鄉",
                "二崙鄉",
                "崙背鄉",
                "西螺鎮",
                "土庫鎮",
                "北港鎮",
                "虎尾鎮",
                "臺西鄉"
            ),
            //嘉義市
            listOf(
                "西區",
                "東區"
            ),
            //嘉義縣
            listOf(
                "大林鎮",
                "民雄鄉",
                "溪口鄉",
                "朴子市",
                "水上鄉",
                "中埔鄉",
                "竹崎鄉",
                "梅山鄉",
                "番路鄉",
                "新港鄉",
                "義竹鄉",
                "鹿草鄉",
                "太保市",
                "布袋鎮",
                "東石鄉",
                "六腳鄉",
                "大埔鄉",
                "阿里山鄉"
            ),
            //臺南市
            listOf(
                "中西區",
                "東區",
                "歸仁區",
                "東山區",
                "下營區",
                "六甲區",
                "官田區",
                "大內區",
                "西港區",
                "新市區",
                "新化區",
                "善化區",
                "學甲區",
                "柳營區",
                "後壁區",
                "白河區",
                "麻豆區",
                "佳里區",
                "永康區",
                "新營區",
                "鹽水區",
                "安南區",
                "北區",
                "關廟區",
                "山上區",
                "玉井區",
                "南區",
                "左鎮區",
                "仁德區",
                "安平區",
                "將軍區",
                "楠西區",
                "北門區",
                "安定區",
                "七股區",
                "南化區",
                "龍崎區"
            ),
            //高雄市
            listOf(
                "彌陀區",
                "內門區",
                "梓官區",
                "甲仙區",
                "岡山區",
                "小港區",
                "鳳山區",
                "前鎮區",
                "旗津區",
                "鳥松區",
                "燕巢區",
                "阿蓮區",
                "茄萣區",
                "林園區",
                "大寮區",
                "大樹區",
                "仁武區",
                "旗山區",
                "美濃區",
                "三民區",
                "新興區",
                "楠梓區",
                "苓雅區",
                "左營區",
                "鹽埕區",
                "鼓山區",
                "前金區",
                "路竹區",
                "杉林區",
                "湖內區",
                "橋頭區",
                "六龜區",
                "大社區",
                "田寮區",
                "永安區",
                "茂林區",
                "桃源區",
                "那瑪夏區"
            ),
            //屏東縣
            listOf(
                "屏東市",
                "新園鄉",
                "林邊鄉",
                "南州鄉",
                "佳冬鄉",
                "車城鄉",
                "萬丹鄉",
                "長治鄉",
                "麟洛鄉",
                "里港鄉",
                "鹽埔鄉",
                "高樹鄉",
                "內埔鄉",
                "枋寮鄉",
                "潮州鎮",
                "東港鎮",
                "恆春鎮",
                "枋山鄉",
                "琉球鄉",
                "春日鄉",
                "九如鄉",
                "萬巒鄉",
                "新埤鄉",
                "竹田鄉",
                "崁頂鄉",
                "滿州鄉",
                "三地門鄉",
                "霧臺鄉",
                "瑪家鄉",
                "泰武鄉",
                "來義鄉",
                "獅子鄉",
                "牡丹鄉"
            ),
            //臺東縣
            listOf(
                "臺東市",
                "關山鎮",
                "鹿野鄉",
                "太麻里鄉",
                "成功鎮",
                "長濱鄉",
                "卑南鄉",
                "大武鄉",
                "東河鄉",
                "池上鄉",
                "綠島鄉",
                "延平鄉",
                "海端鄉",
                "達仁鄉",
                "金峰鄉",
                "蘭嶼鄉"
            ),
            //花蓮縣
            listOf(
                "玉里鎮",
                "新城鄉",
                "吉安鄉",
                "花蓮市",
                "鳳林鎮",
                "瑞穗鄉",
                "壽豐鄉",
                "光復鄉",
                "富里鄉",
                "秀林鄉",
                "萬榮鄉",
                "卓溪鄉",
                "豐濱鄉"
            ),
            //宜蘭縣
            listOf(
                "羅東鎮",
                "宜蘭市",
                "員山鄉",
                "冬山鄉",
                "蘇澳鎮",
                "頭城鎮",
                "五結鄉",
                "礁溪鄉",
                "三星鄉",
                "壯圍鄉",
                "南澳鄉",
                "大同鄉"
            ),
            //澎湖縣
            listOf(
                "西嶼鄉",
                "馬公市",
                "湖西鄉",
                "白沙鄉",
                "望安鄉",
                "七美鄉"
            ),
            //金門縣
            listOf(
                "金城鎮",
                "金沙鎮",
                "金湖鎮",
                "金寧鄉",
                "烈嶼鄉"
            ),
            //連江縣
            listOf(
                "北竿鄉",
                "莒光鄉",
                "東引鄉",
                "南竿鄉"
            )
        )

    /**
     * 獲取所有縣市名稱
     * @return 返回所有縣市名稱
     */
    fun getAllCountiesName(): List<Any> {
        return counties
    }

    /**
     * 透過縣市名稱,獲取特定鄉鎮名稱
     * @param countyName 縣市名稱
     * @return 返回該縣市的所有鄉鎮名稱
     */
    fun getTownsByCountyName(countyName: String): List<Any> {
        val index = counties.indexOf(countyName)
        return towns[index]
    }
}

CountyUtil 使用方式

獲取所有縣市資料

val counties =CountyUtil.getAllCountiesName()
for (i in counties) {
    println(i)
}

輸出結果

基隆市
臺北市
新北市
...
...
...

獲取特定縣市鄉鎮資料

val towns = CountyUtil.getTownsByCountyName("連江縣")
for (i in towns) {
    println(i)
}

輸出結果

北竿鄉
莒光鄉
東引鄉
南竿鄉
...
...
...

參考資料

HKT 線上教室
https://tw-hkt.blogspot.com/

Freepik
https://www.freepik.com/


縣市鄉鎮小工具,其實未來滿多地方,都滿有機會再次用到它的,希望這個小工具,在未來的開發路上可以幫助到大家。也藉這個機會說明,未來大家如果有常用或自己開發很酷、很好用的東西,也可以把他封裝成一個小工具,發佈出來分享給大家使用。

那今天【iThome 鐵人賽】就介紹到這邊囉~

順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,追蹤喔!也歡迎大家將這篇文章分享給更多人喔。

我們明天再見囉!!!掰掰~


上一篇
Day 19:Kotlin 分組(groupBy)集合資料用法
下一篇
Day 21:Spinner 下拉選單基本用法
系列文
Android 口罩地圖入門實戰 30 天 (使用 Kotlin 程式語言)30

尚未有邦友留言

立即登入留言