最后
3. 效果图
首页
文章详情
登录
其他
4. 技术栈
- databinding
- kotlin
- rxJava + rxAndroid
- retrofit + okhttp
- glide
5. 关于 “10+行” 实现的分页列表
我们来看第3个tab - 消息列表: see NotifyVM.kt
消息
// NotifyListVM.kt
@ResHolder(R.layout.item_notify_list) // item 布局
@HeaderResHolder(R.layout.header_notify) // header 布局
class NotifyListVM : TwoWayListVM() {
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
绑定在一起。
重点来了:
- view(pullToRefresh) -> data(list): 当view有动作(下拉刷新 or 上拉加载),框架会自行调用
loadTask
,然后更新TwoWayListVM.data
- data(list) -> view(RecyclerView): 而当
TwoWayListVM.data
发生变化,会自动触发RecyclerView
刷新。
然后,配合 kotlin 简洁的语法,我们实现了也许是史上最简洁???
的分页列表。
6. 项目持续打磨中,有兴趣给个star~
7. 参考
Android DataBinding 数据绑定 —— QQ音乐技术团队
官方文档
完全掌握Android Data Binding
MVVMLight
最后
这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)
录**