All Projects → fashare2015 → Mvvm Juejin

fashare2015 / Mvvm Juejin

Licence: mit
高仿"掘金Android App": databinding + kotlin + rx 的优雅实践。(持续打磨中~)

Programming Languages

java
68154 projects - #9 most used programming language
kotlin
9241 projects

Projects that are alternatives of or similar to Mvvm Juejin

Mvvmhabitcomponent
👕基于MVVMHabit框架,结合阿里ARouter打造的一套Android MVVM组件化开发方案
Stars: ✭ 857 (+112.66%)
Mutual labels:  okhttp, mvvm, retrofit, databinding
Jetpackmvvm
🐔🏀一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
Stars: ✭ 1,100 (+172.95%)
Mutual labels:  okhttp, mvvm, retrofit, databinding
Mvvmhabit
goldze: 本人喜欢尝试新的技术,以后发现有好用的东西,我将会在企业项目中实战,没有问题了就会把它引入到MVVMHabit中,一直维护着这套框架,谢谢各位朋友的支持。如果觉得这套框架不错的话,麻烦点个 star,你的支持则是我前进的动力!
Stars: ✭ 6,789 (+1584.62%)
Mutual labels:  okhttp, mvvm, retrofit, databinding
Mvvmsmart
基于谷歌最新AAC架构,MVVM设计模式的一套快速开发库,整合ViewModel+Lifecycles+Navigation+DataBinding+LiveData+Okhttp+Retrofit+RxJava+Glide等主流模块,满足日常开发需求。使用该框架可以快速开发高质量、易维护的Android应用。 项目组会持续维护,请放心使用.欢迎Start并Fork交流.
Stars: ✭ 382 (-5.21%)
Mutual labels:  okhttp, mvvm, databinding
AndroidGo
Android、Flutter 开发者帮助 APP。包含事件分发、性能分析、Google Jetpack组件、OkHttp、RxJava、Retrofit、Volley、Canvas绘制以及优秀博文代码案例等内容,帮助开发者快速上手!
Stars: ✭ 30 (-92.56%)
Mutual labels:  retrofit, mvvm, okhttp
PlayAndroid
✌️✊👋玩安卓Mvvm组件化客户端,整合Jetpack组件DataBinding、ViewModel以及LiveData;屏幕适配✔️状态栏沉浸式✔️黑夜模式✔️,无数据、加载失败状态页;骨架屏、Koin依赖注入等
Stars: ✭ 193 (-52.11%)
Mutual labels:  retrofit, mvvm, databinding
Awesomegithub
🔥Android Github客户端,基于组件化开发,支持账户密码与认证登陆。使用Kotlin语言进行开发,项目架构是基于JetPack&DataBinding的MVVM;项目中使用了Arouter、Retrofit、Coroutine、Glide、Dagger与Hilt等流行开源技术。
Stars: ✭ 128 (-68.24%)
Mutual labels:  mvvm, retrofit, databinding
Viabus Architecture
让 Android 开发可以像流水线一样高效的,职责分离架构 ⚡ 不同于 MVP 的配置解耦,也不能和 似是而非 的 MVVM - Clean 同日而语。VIABUS 是世界范围内首个明确提出,通过职责分离,来真正实现 UI 和 业务并行开发的 Android 项目级开发架构和设计模式理念。
Stars: ✭ 485 (+20.35%)
Mutual labels:  okhttp, mvvm, retrofit
Wandroid
首款适配玩Android、掘金、简书、CSDN、公众号文章黑夜模式,无广告,支持离线阅读,代码图片显示,关注内容本身,阅读体验升级。
Stars: ✭ 199 (-50.62%)
Mutual labels:  mvvm, retrofit, databinding
Askme
Social media app to ask and answer user questions and interact with users
Stars: ✭ 16 (-96.03%)
Mutual labels:  retrofit, mvvm, databinding
Weaponapp
一个尽量做到极致的集大成App,努力做到最好(开发阶段)——MVVM+Retrofit+RxJava+Small 插件化+单元测试+MD
Stars: ✭ 1,011 (+150.87%)
Mutual labels:  okhttp, mvvm, databinding
Aachulk
️🔥️🔥️🔥AACHulk是以Google的ViewModel+DataBinding+LiveData+Lifecycles框架为基础, 结合Okhttp+Retrofit+BaseRecyclerViewAdapterHelper+SmartRefreshLayout+ARouter打造的一款快速MVVM开发框架
Stars: ✭ 109 (-72.95%)
Mutual labels:  okhttp, mvvm, retrofit
Mentorship Android
Mentorship System is an application that matches women in tech to mentor each other, on career development, through 1:1 relations during a certain period of time. This is the Android application of this project.
Stars: ✭ 117 (-70.97%)
Mutual labels:  mvvm, retrofit, databinding
AvengersChat
💙 Android sample Avengers chat application using Stream Chat SDK based on MVVM (ViewModel, Coroutines, Room, Hilt, Repository) architecture.
Stars: ✭ 350 (-13.15%)
Mutual labels:  retrofit, okhttp, databinding
Newandroidarchitecture Component Github
Sample project based on the new Android Component Architecture
Stars: ✭ 229 (-43.18%)
Mutual labels:  rx, mvvm, retrofit
WanAndroidJetpack
🔥 WanAndroid 客户端,Kotlin + MVVM + Jetpack + Retrofit + Glide。基于 MVVM 架构,用 Jetpack 实现,网络采用 Kotlin 的协程和 Retrofit 配合使用!精美的 UI,便捷突出的功能实现,欢迎下载体验!
Stars: ✭ 124 (-69.23%)
Mutual labels:  retrofit, okhttp, databinding
TpHulk
androidx,mvp,mvvm,jetpack
Stars: ✭ 19 (-95.29%)
Mutual labels:  mvvm, databinding
gv4j
Unofficial Google Voice API for Java.
Stars: ✭ 18 (-95.53%)
Mutual labels:  retrofit, okhttp
TMDbMultiplatform
Step-by-step guide on Kotlin Multiplatform
Stars: ✭ 86 (-78.66%)
Mutual labels:  mvvm, rx
LoginMVVM
Android login application with form validation and Database storage made using MVVM and Data binding
Stars: ✭ 19 (-95.29%)
Mutual labels:  mvvm, databinding

高仿掘金App —— 基于 databinding

1. 项目初衷

不同于前端 vue、 react 的火热, 移动端的 databinding 好像不受待见。鉴于 vue、 react 都有各自成熟的生态圈,我希望通过这个项目打磨出一个简单易用的 databinding 组件库

1.1 data -> view,舍弃 Adapter

之前有不少前辈专门针对 RecyclerView 做了各自的封装,完全省去了 Adapter, 比如:

1.2 更进一步:view -> data -> view

在本项目中,你将会看到一个带有 下拉刷新 + 上拉加载 的页面如何简化到10+行java代码 ! see NotifyVM.kt

2. 模块概览

接口全抓自掘金app, 支持登录、注册(走的官方接口,并非假数据哦~)

  • 已完成:
    • 登录、注册:可以用自己的掘金帐号登录,或者临时注册一个
    • 首页:热门推荐及文章列表,以及各个分类页面(Android、前端、产品。。。)
    • 发现:一级页面,包括 banner、活动、沸点、热门文章
    • 消息:完成消息列表
    • 我的:一级页面,包括登录与未登录两个状态
    • 文章详情页面: 文章 html 以及 下方的评论列表
  • TODO:
    • splash 页
    • 第三方登录
    • 发现页 - 搜索模块、活动、沸点的二级页面
    • 我的 - 个人信息页,包括从用户头像跳转
    • 我的 - 喜欢、收藏、设置等二级页面
    • 发布文章页
    • 收藏、评论、分享等其他功能
    • 夜间模式
    • ...

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<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绑定在一起。 重点来了:

  1. view(pullToRefresh) -> data(list): 当view有动作(下拉刷新 or 上拉加载),框架会自行调用loadTask,然后更新TwoWayListVM.data
  2. data(list) -> view(RecyclerView): 而当TwoWayListVM.data发生变化,会自动触发RecyclerView刷新。

然后,配合 kotlin 简洁的语法,我们实现了也许是史上最简洁???的分页列表。

6. 项目持续打磨中,有兴趣给个star~

7. 参考

Android DataBinding 数据绑定 —— QQ音乐技术团队

官方文档

完全掌握Android Data Binding

MVVMLight

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].