MVVM-JueJinhtml
不一樣於前端 vue、 react 的火熱, 移動端的 databinding 好像不受待見。鑑於 vue、 react 都有各自成熟的生態圈,我但願經過這個項目打磨出一個簡單易用的
databinding 組件庫
。前端
以前有很多前輩專門針對 RecyclerView 作了各自的封裝,徹底省去了 Adapter, 好比:vue
在本項目中,你將會看到一個帶有 下拉刷新
+ 上拉加載
的頁面如何簡化到10+行java代碼
! see NotifyVM.ktjava
接口全抓自掘金app, 支持登陸、註冊(走的官方接口,並不是假數據哦~)react
咱們來看第3個tab - 消息列表: see NotifyVM.ktandroid
// NotifyListVM.kt
@ResHolder(R.layout.item_notify_list) // item 佈局
@HeaderResHolder(R.layout.header_notify) // header 佈局
class NotifyListVM : TwoWayListVM<NotifyBean>() {
override val loadTask = { lastItem: NotifyBean? -> // 網絡請求(refresh、loadMore 二合一)
ApiFactory.getApi(JueJinApis.Notify:: class.java)
.getUserNotification(lastItem?.createdAtString?: "")
.compose(Composers.handleError())
}
override val onItemClick = ArticleActivity.START_FROM_NOTIFY // 點擊事件
override val headerData = Any()
}複製代碼
框架中封裝了TwoWayListVM
,咱們的NotifyListVM
繼承與它,並在佈局中與RecyclerView
綁定在一塊兒。
重點來了:git
loadTask
,而後更新TwoWayListVM.data
TwoWayListVM.data
發生變化,會自動觸發RecyclerView
刷新。而後,配合 kotlin 簡潔的語法,咱們實現了也許是史上最簡潔???
的分頁列表。github
Android DataBinding 數據綁定 —— QQ音樂技術團隊網絡
官方文檔app