# Smart **Repository Path**: DecviLGroup/Smart ## Basic Information - **Project Name**: Smart - **Description**: 小型敏捷开发框架。 - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-11-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Smart 小型敏捷开发框架。 > 基础配置 * config.gradle --- 配置应用基本信息,第三方库引用。 * channel.gradle --- 配置渠道号,打渠道包 > 部分类说明 ## Activity ##### BaseActivity ``` 所有类的基类,继承SwipeBackActivity可以实现边缘侧滑关闭Activity的手势, 同时实现了EventObserver接口,处理消息事件。 ``` ##### ToolbarActivity ``` 继承BaseActivity,主要用于处理顶部Toolbar相关的设置。 ``` ##### StateActivity ``` 继承ToolbarActivity,主要是页面处于处理数据的某种状态,相应方法: * showLoadingView 数据加载中... * showContentView 加载完成,展示数据。 * showEmptyView 数据为空,展示相关提示空白页。 * showErrorView 数据加载错误,展示提示错误页。 ``` ##### ScrollActivity ``` 继承StateActivity实现CanScroll接口,配合RecyclerView实现下拉刷新上拉加载更多, 提供了RecyclerView三种展示样式。 ``` ##### PageActivity ``` 继承ScrollActivity实现LoadView接口,接受Presenter在网络请求处理之后的数据, 做列表分页,有关列表分页的页面主要继承这个类。 ``` ##### SingleFragmentActivity ``` 用于处理嵌入单一Fragment的页面。 ``` 上述就是几个常用的基类,XXXFragment的相关基类功能与XXXActivity的相同。 ## Adapter ##### BaseAapter ``` 封装了RecyclerView.Adapter,实现了对列表数据的相关操作和上拉列表加载更多。 ``` ##### TypeAapter ``` 继承了BaseAapter,实现了对不同列表Item不同数据的分类,展示列表Item不同样式。 ``` ##### ExpandableAapter ``` 继承了TypeAapter,列表不同Item下的扩展。 ``` ## Presenter ##### LoadPresenter 所有的网络接口请求的Presenter类继承LoadPresenter类。 根据不同接口的返回数据的不同,调用相应的CallBack进行数据解析,将数据传给LoadView。 ##### LoadView 该接口定义了三个网络数据请求的回调方法。 ```java public interface LoadView { /** * Null only occurs in POST action.means success. */ @Nullable void onSuccess(List data); void onCache(long cacheTime, List data); void onFail(int errorCode, String errorMsg); } ``` > 网络请求 在ApiManger中添加相应的接口服务器(XXXServer)和对应的请求(XXXApi),在mvp包中定义好 相应的model和Presenter就可以,进行网络数据请求跟Json解析。 > 引用其他工程 ##### MyDaoGenerator GreenDao的库表的生成器,如下所示为生成网络请求数据的缓存数据库表: ```java public class MyDaoGenerator { private final static int DB_VERSION = 1; private final static String PKG_NAME = "com.zjt.smart"; public static void main(String args[]) throws Exception { Schema schema = new Schema(DB_VERSION, PKG_NAME + ".bean"); schema.setDefaultJavaPackageDao(PKG_NAME + ".dao"); initCacheBean(schema); new DaoGenerator().generateAll(schema, "././app/src/main/java-gen"); } private static void initCacheBean(Schema schema) { Entity cacheBean = schema.addEntity("CacheBean"); cacheBean.setTableName("CacheBean"); cacheBean.addLongProperty("id").primaryKey().index(); cacheBean.addStringProperty("url"); cacheBean.addStringProperty("response"); cacheBean.addLongProperty("time"); } } ``` 建表,只需定义好相关的字段名,运行该类就可以自动生成对应的数据表,相应的Bean、Dao代码 写入到/app/src/main/java-gen中。