{"id":15027798,"url":"https://github.com/limedroid/xdroidmvp","last_synced_at":"2025-05-15T20:05:59.108Z","repository":{"id":52683815,"uuid":"77196124","full_name":"limedroid/XDroidMvp","owner":"limedroid","description":"轻量级的Android MVP快速开发框架","archived":false,"fork":false,"pushed_at":"2023-05-29T07:51:45.000Z","size":1676,"stargazers_count":1533,"open_issues_count":49,"forks_count":399,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-05-15T20:05:42.406Z","etag":null,"topics":["android-mvp","xdroid"],"latest_commit_sha":null,"homepage":"https://github.com/limedroid/XDroidMvp","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/limedroid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-12-23T03:55:39.000Z","updated_at":"2025-03-23T08:41:31.000Z","dependencies_parsed_at":"2022-08-13T02:01:24.358Z","dependency_job_id":"dae26d6a-cee2-4de1-baf6-5a94c4b57c3d","html_url":"https://github.com/limedroid/XDroidMvp","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXDroidMvp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXDroidMvp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXDroidMvp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limedroid%2FXDroidMvp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/limedroid","download_url":"https://codeload.github.com/limedroid/XDroidMvp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254414499,"owners_count":22067272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-mvp","xdroid"],"created_at":"2024-09-24T20:07:04.641Z","updated_at":"2025-05-15T20:05:54.019Z","avatar_url":"https://github.com/limedroid.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"#XDroidMvp 轻量级的Android MVP快速开发框架\n\n## 概述\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"xdroid_logo_128.png\"/\u003e\n\u003c/p\u003e\n\n**XDroidMvp**是[XDroid](https://github.com/limedroid/XDroid)Android快速开发框架的MVP版本，其使用方式类似于`XDroid`，大部分源码也来自`XDroid`。\n\n**XDroidMvp全新文档**：[https://github.com/limedroid/XDroidMvp/wiki](https://github.com/limedroid/XDroidMvp/wiki)\n\n[![](https://jitpack.io/v/limedroid/XDroidMvp.svg)](https://jitpack.io/#limedroid/XDroidMvp)\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"art/XdroidMvp_total.png\"/\u003e\n\u003c/p\u003e\n\n`XDroidMvp`主要会有这些特性：\n\n**无需写`Contract`！ 无需写`Present`接口！  无需写`View`接口!**\n\n新增：\n\n* Mvp实现\n* `RxJava` \u0026 `RxAndroid`\n* 权限适配 `RxPermission`\n* 事件订阅默认采用 `RxBus`\n* 网络交互：\n\t* `Retrofit` + `rx`\n\t* `Https`\n\t* **统一异常处理**\n\t* 缓存\n\t* **支持多个baseUrl**\n\t* 。。。。\n* 无需担心rx内存泄漏\n* 适配AndroidX，请前往`android-x`分支\n\n保留：\n\n* 提供`XActivity`、`XFragment`、`SimpleRecAdapter`、`SimpleListAdapter`等基类，可快速进行开发\n* 完整封装`XRecyclerView`，可实现绝大部分需求\n* `XStateController`、`XRecyclerContentLayout`实现loading、error、empty、content四种状态的自由切换\n* 实现了`Memory`、`Disk`、`SharedPreferences`三种方式的缓存，可自由扩展\n* 内置了`RxBus`，可自由切换到其他事件订阅库\n* 内置`Glide`，可自由切换其他图片加载库\n* 可输出漂亮的`Log`，支持`Json`、`Xml`、`Throwable`等，蝇量级实现\n* 内置链式路由\n* 内置常用工具类：`package`、`random`、`file`...,提供的都是非常常用的方法\n* 内置加密工具类 `XCodec`，你想要的加密姿势都有\n\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"mvp.png\"/\u003e\n\u003c/p\u003e\n\n\n**先睹为快**\n\n你可以这么使用:\n\nBasePagerFragment\n\n```java\npublic abstract class BasePagerFragment extends XFragment\u003cPBasePager\u003e{\n\n   @Override\n    public void initData(Bundle savedInstanceState) {\n        getP().loadData(getType(), 1);\t//调用P方法\n    }\n\n   public void showData(int page, GankResults model) {\n        if (page \u003e 1) {\n            getAdapter().addData(model.getResults());\n        } else {\n            getAdapter().setData(model.getResults());\n        }\n\n        contentLayout.getRecyclerView().setPage(page, MAX_PAGE);\n\n        if (getAdapter().getItemCount() \u003c 1) {\n            contentLayout.showEmpty();\n            return;\n        }\n    }\n    \n\t @Override\n    public PBasePager newP() {\n        return new PBasePager();\n    }}\n    \n    @Override\n    public int getLayoutId() {\n        return R.layout.fragment_base_pager;\n    }\n```\n\nPBasePager\n\n```java\npublic class PBasePager extends XPresent\u003cBasePagerFragment\u003e {\n    protected static final int PAGE_SIZE = 10;\n\n\n    public void loadData(String type, final int page) {\n        Api.getGankService().getGankData(type, PAGE_SIZE, page)\n                .compose(XApi.\u003cGankResults\u003egetApiTransformer())\n                .compose(XApi.\u003cGankResults\u003egetScheduler())\n                .subscribe(new ApiSubcriber\u003cGankResults\u003e() {\n                    @Override\n                    protected void onFail(NetError error) {\n                        getV().showError(error); //调用V方法\n                    }\n\n                    @Override\n                    public void onNext(GankResults gankResults) {\n                        getV().showData(page, gankResults);\n                    }\n                });\n    }\n}\n```\n\n## Get Started\n\n使用，仅需四步：\n\n### step1  \n\nclone 'XDroid'库到本地:\n```groovy\ngit clone https://github.com/limedroid/XDroidMvp.git\n```\n\n### step2\n\n将`mvp`作为依赖库，在您的app module 中 添加如下依赖:\n```groovy\ncompile project(':mvp')\n```\n\n### step3\n\n拷贝`conf.gradle`到您的项目根目录，并修改项目gradle文件下引入：\n```groovy\napply from: \"conf.gradle\"\n```\n\n并添加:\n\n```groovy\nallprojects {\n    repositories {\n        jcenter()\n        maven { url \"https://jitpack.io\" }\n    }\n}\n```\n\n### step4\n\n修改`XDroidConf`配置类，主要针对log、cache、router、imageloader。若采用默认配置，此步骤可略过.\n\n## 第二种方式，通过JitPack引入\n\n### step1 在根目录的gradle文件中配置:\n```groovy\nallprojects {\n    repositories {\n        jcenter()\n        maven { url \"https://jitpack.io\" }\n    }\n}\n```\n\n### step2 添加依赖:\n```groovy\ndependencies {\n\t   implementation 'com.github.limedroid:XDroidMvp:v2.0.1'\n}\n```\n\n\n## Demo效果\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"art/snapshot_2.png\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"art/snapshot_1.png\"/\u003e\n\u003c/p\u003e\n\n\n## 重要说明\n\n* [ButterKnife](https://github.com/JakeWharton/butterknife)使用的是8.4.0版本，重点是 `@BindView`，可以去项目官网查看。\n* [Rxlifecycle](https://github.com/trello/RxLifecycle)使用的是1.0版本，具体如何使用可以查看官网。\n* [RxPermissions](https://github.com/tbruyelle/RxPermissions)使用的是0.9.1版本，具体如何使用可以查看官网。\n* [retrofit](https://github.com/square/retrofit)，具体如何使用可以查看官网。\n\n## 更新日志\n\n* 2017-04-23，新增proguard rules,upgrade to rx2\n* 2016-12-23，新增mvp、base、cache、event、imageloader、log、router\n* 2016-12-25，新增rxJava、rxAndroid、rxlifecycle、rxpermission、rxbus、net(retrofit)\n* 2016-12-26，新增网络异常统一处理\n* 2016-12-28，重构MVP\n* 2016-12-30，重构网络层\n* 2016-12-31，新增[Demo](https://github.com/limedroid/XDroidMvp/tree/master/app)\n\n\n## TODO\n\n* [x] rx\n* [x] retrofit\n* [x] rxpermission\n* [x] rxbus\n* [x] cache\n* [x] wiki\n* [x] demo\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=limedroid/XDroidMvp\u0026type=Date)](https://star-history.com/#limedroid/XDroidMvp\u0026Date)\n\n## About Me\n\n**Email** : droidlover@126.com\n\n**XDroid交流群**：153569290\n\n**XDroid MVC版本**：[XDroid](https://github.com/limedroid/XDroid)\n\n若您在使用过程中遇到任何问题，欢迎加入 **153569290** 群或者是邮件反馈，谢谢您的关注。**XDroidMvp**会持续维护，如果喜欢，记得star fork。\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimedroid%2Fxdroidmvp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimedroid%2Fxdroidmvp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimedroid%2Fxdroidmvp/lists"}