iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0

開頭

筆記上傳後,總是要下載下來的,下載跟上傳的流程一樣,只是差在下載不用丟資料出去

Get 流程

Fragment 點擊事件

一樣在 Fragment 的onViewCreated建立點擊事件

binding.download.setOnClickListener {
    viewModel.downloadHackmd()
}

ViewModel 執行事件

Get 跟 Post 一樣是走副執行緒,所以直接用共常式執行,利用改變 _httpStatus 來決定畫面要顯示什麼

private var _httpStatus = MutableLiveData<String?>()
val httpStatus: LiveData<String?>
    get() = _httpStatus

fun downloadHackmd() {
    viewModelScope.launch {
        HttpManager.INSTANCE.get(
            BaseConstants.NOTES,
            token,
            getApplication(),
            object : HttpResponseListener {
                override fun onFailure(status: String, responseBody: String) {
                    _hackmdDownloadStatus.getValue(status)
                }
                override fun onSuccess(responseBody: String) {
                    //這邊寫入下載的資料
                }
            })
    }
}

Fragment 監聽狀態改變畫面

viewModel.httpStatus.observe(viewLifecycleOwner) { status ->
    status?.let {
        //這邊顯示上傳成功的畫面
    }
}

上一篇
111/28 - 上傳筆記(4/4) - 符合 HackMD 格式
下一篇
111/30 - 完賽檢討
系列文
聽說 HackMD 開放 API 串接,那麼用 Kotlin 寫個筆記 App 吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言