iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
1
    routing {
        get("/") {
            call.respond(mapOf("message" to "HELLO WORLD!"))
        }
    }

我展示了一下昨天的重點成果,老姐大力讚揚:「喔喔,做得好!我猜猜, rounting 是用來分配每個路徑的工作,那個 gethttp method"/" 是相對路徑, call.respond 裡放的是要輸出的資料物件,對吧?雖然還不熟悉 Kotlin ,但 mapOf 看著就像是 map 物件。」不愧是老姐,理解力和我一樣好。

「對了,我查一下電腦內網的 ip 給妳。」我在 Mac OS 終端機程式上輸入:

ifcongig

https://ithelp.ithome.com.tw/upload/images/20200912/20129197OROR0Fkq4D.png

確認老姐連上 192.168.48.3:8080 ,看到的畫面也和我一致,這樣就沒問題了。

「我想應該是先做題目建立、題目詳情和題目刪除,你怎麼想?」老姐詢問我的意見。

「嗯⋯⋯已經有題目物件的資料格式了嗎?」我邊說邊快速地對三個 API 執行複製貼上。

    routing {
        get("/") {
            call.respond(mapOf("message" to "HELLO WORLD!"))
        }
        get("/api/topics/{id}") {
            TODO()
        }
        post("/api/topics") {
            TODO()
        }
        delete("/api/topics/{id}") {
            TODO()
        }
    }

「是有點想法啦,題目內容在想說是不是另外放,因為列表頁面看不到那麼多資訊。」嗯哼,這邊就是資料庫設計的領域了。

https://ithelp.ithome.com.tw/upload/images/20200912/201291971WicA5tNjI.png

「資料庫其實不需要那麼多互相關聯的 table ,題目資料統一放一起就好,我可以在列表 API 只輸出比較少的資料欄位,減輕網路負擔。」隨手把題目列表 API 也列入待辦事項。

        get("/api/topics") {
            TODO()
        }

「那你要用哪個資料庫系統?」因為 Android 原生支援的只有 sqlite ,老姐不由得好奇 Server 這邊的情形,儘管她知道用哪個系統其實對 App 端都沒有差別。

「我先看看 IDE 這邊有支援哪些選項,哇喔,比想像的還多。」

https://ithelp.ithome.com.tw/upload/images/20200912/20129197futSIwYfs8.png
https://ithelp.ithome.com.tw/upload/images/20200912/20129197cdcSwnsQig.png

「選擇太多反而是困擾呢。姐妳那邊 App 不動工嗎?」煩惱的時候轉移話題就可以延後選擇了!

「還在想畫面設計。」對喔,App 畫面很重要,不像我這次負責的只是在背後用 API 吐資料,App 會直接面對使用者。

或著說,當 API 出包了,被打一顆星的還是 App ,當然公司內部知道責任是誰啦。

我打開幾個手機 App ,選了其中一個給她看,「直接參考常見信箱 App 的設計就好了,有列表、新增按鈕、搜尋功能。」

「你提醒我了,官方有提供一些設計。」老姐興匆匆的點開網頁 https://developer.android.com/design

https://ithelp.ithome.com.tw/upload/images/20200912/201291979HISV0NaaH.png

接著她就進入開發模式,一邊翻 Kotlin 文件 https://kotlinlang.org/docs/reference/ 一邊翻看 MainActivity.kt ,她第一步就是按下慣用的 command 同時用滑鼠點擊 activity_main 打開對應的畫面設置 activity_main.xml ,畢竟只是寫的語言改了,但是 IDE 快捷鍵和 App 架構邏輯是沒變的。

https://ithelp.ithome.com.tw/upload/images/20200912/20129197MEdpb3bApE.png

https://ithelp.ithome.com.tw/upload/images/20200912/20129197V8I4xpQyeY.png

雖然 IDE 貼心的提供所見即所得的拖拉元件模式,但明顯她還是習慣手動文字編輯,所以在右上角切換成程式碼 Code 模式。我猜可能是方便各相似畫面之間的排版複製貼上?

https://ithelp.ithome.com.tw/upload/images/20200912/201291971KvHk0s06s.png

https://ithelp.ithome.com.tw/upload/images/20200912/20129197rzpo0p8OqG.png

我湊過去看老姐的螢幕,這個模板看起來主要 UI 是放在 Fragment , Activity 只包含標題列和浮動按鈕。

因為需要列表和下拉更新的元件,所以在專案的 app 模組資料夾下 build.gradledependencies 區塊加上 Library :

    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"

https://ithelp.ithome.com.tw/upload/images/20200912/20129197sUvyqnUAE2.png

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_13
        targetCompatibility JavaVersion.VERSION_13
    }
    kotlinOptions {
        jvmTarget = '1.13'
    }

在改 compileOptionskotlinOptions 時發現最新的 com.android.tools.build:gradle:4.0.1 只支援到 JDK 13 ,老姐一臉失望。

只好去吃大餐轉換情緒囉,嘿嘿嘿,畢竟休息才能走更遠的路!明天的 TODO 還在等著我們。

本次鐵人賽的作品在放進更多內容後已經成書,書名是《老姐要用Kotlin寫專案:從 Server 到 Android APP 的開發生存日記》,歡迎購買唷。https://www.tenlong.com.tw/products/9789864348978


上一篇
夢中打字的第二天:用 IDE 建立專案
下一篇
調整時程的第四天:dataBinding 小麻煩
系列文
老姐好像要用 Kotlin 寫專案,能撐30天嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言