CFramework 基于DataBinding的一个基本框架,网络层使用okHttp

网友投稿 950 2022-10-30

CFramework 基于DataBinding的一个基本框架,网络层使用okHttp

CFramework 基于DataBinding的一个基本框架,网络层使用okHttp

CFramework的介绍

基于DataBinding的一个基本框架,网络层使用okHttp。 第一次写框架,定有不妥之处,望大家留言指出。 框架介绍也写的一般,比较乱。会慢慢更正。 outlook:guoshichaocc@live.com gmail:guoshichao-@gmail.com

CFramework的依赖

添加依赖

在Project的build.gradle中添加:

allprojects { repositories { jcenter() maven { url 'https://jitpack.io' } }}

在Module的build.gradle中添加:

dependencies { compile 'com.github.super-cc:CFramework:v1.0.3'}

在Module的build.gradle中android中添加:

dataBinding { enabled = true}

记得添加网络权限

CFramework的使用

基础框架

先看文件夹的图片:

先简单的了解一下:

base:基础的Activity,Adapter,Http等。constant:一些常量。db:数据库操作。lock:给xml设置的类model:DataBinding数据模型network:网络的封装。response:网络请求返回的Json解析类service:服务类。ui:Activity,Fragment,Adapter界面类。utils:工具类。view:自定义控件。

基本使用

在model下新建Demo类:

/** * 创建日期:2017/10/31 on 14:46 * 描述:数据模型Demo,如果需要数据刷新就继承BaseObservable * 作者:郭士超 * QQ:1169380200 */public class Demo extends BaseObservable{ private String name; private String age; public Demo(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}

在model下新建DemoItem类:

/** * 创建日期:2017/10/31 on 16:47 * 描述:在ListView或RecyclerView中使用的数据模型 * 作者:郭士超 * QQ:1169380200 */public class DemoItem { private String name; private String age; public DemoItem(String name, String age) { this.name = name; this.age = age + "岁"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}

在lock下新建DemoLock类:

/** * 创建日期:2017/10/31 on 13:54 * 描述:DemoLock,处理一些网络数据,和一些逻辑 * 作者:郭士超 * QQ:1169380200 */public class DemoLock extends CBaseLock { private Demo mDemo; private List mListDemo; private DemoAdapter mDemoAdapter; private CBaseRecyclerViewAdapter mAdapter; public DemoLock(Context context, ActivityDemoBinding binding) { super(context, binding); } @Override protected void init() { // 初始化数据 mDemo = new Demo("郭士超", "22"); mListDemo = new ArrayList(); mListDemo.add(new DemoItem(mDemo.getName(), mDemo.getAge())); mDemoAdapter = new DemoAdapter(mContext, mListDemo, R.layout.item_demo, BR.demoItem); mBinding.lvDemo.setAdapter(mDemoAdapter); // 这里或者在xml里设置adapter mDemoAdapter.setOnItemClickListener(new CBaseListViewAdapter.OnItemClickListener() { @Override public void onItemClick(ViewDataBinding binding, int position) { showToast(((ItemDemoBinding) binding).getDemoItem().getName() + mListDemo.get(position).getAge()); } }); LinearLayoutManager ms = new LinearLayoutManager(mContext); mBinding.rvDemo.setLayoutManager(ms); mAdapter = new CBaseRecyclerViewAdapter(mContext, mListDemo, R.layout.item_demo, BR.demoItem);// mBinding.rvDemo.setAdapter(mAdapter); // 这里或者在xml里设置adapter mAdapter.setOnItemClickListener(new CBaseRecyclerViewAdapter.OnItemClickListener() { @Override public void onItemClick(ViewDataBinding binding, int position) { showToast(((ItemDemoBinding) binding).getDemoItem().getName() + mListDemo.get(position).getAge()); } }); // 访问网络的方法 HashMap hashMap = new HashMap(); hashMap.put("userId", "1"); Connection.getInstance().post(DemoResponse.class, UrlConfig.XXX, hashMap, new Connection.ResponseListener() { @Override public void tryReturn(int id, Object response) { switch (id) { case 200: DemoResponse data = (DemoResponse) response; new Demo(data.getData().getName(), String.valueOf(data.getData().getAge())); break; case 100: showToast("用户不存在"); break; default: showToast(((HttpResponse)response).getMsg()); break; } } }); } public void update(View view) { mDemo.notifyChange(); // 刷新数据 mListDemo.add(new DemoItem(mDemo.getName(), mDemo.getAge())); mDemoAdapter.notifyDataSetChanged(); // 刷新数据 mAdapter.notifyDataSetChanged(); // 刷新数据 } public Demo getDemo() { return mDemo; // 让xml中可以调用到Demo } public DemoAdapter getDemoAdapter() { return mDemoAdapter; // 让xml中可以调用到mAdapter } public CBaseRecyclerViewAdapter getAdapter() { return mAdapter; }}

新建xml文件activity_demo布局:

上一篇:MQK是一个简单、高性能的PHP后台任务框架
下一篇:SAP 电商云 Spartacus UI 根据 url 设置 site context 的具体例子
相关文章

 发表评论

暂时没有评论,来抢沙发吧~