如何运用回调和泛型来简洁代码
来源:互联网 发布:淘宝店铺支付宝限额 编辑:程序博客网 时间:2024/06/15 19:03
回调函数运用非常广泛,例如setOnClickListener就是button的一个回调。运用好回调函数可以使接口更直观。泛型则预留了可变部分,使代码更灵活简洁。
话不多说,上代码
public class VolleyTool { private Context mContext; private CallBackVolley cbv; private static RequestQueue mSingleQueue; public VolleyTool(Context context) { this.mContext = context; mSingleQueue = Volley.newRequestQueue(mContext.getApplicationContext(), new MultiPartStack()); } /** * * @param url 请求地址 * @param map 接口传入的参数 * @param cls 实体类 * @param callBackVolley 回调函数 */ public <T>void setCallBack(final String url, final Map<String, String> map,final Class<T> cls,final CallBackVolley callBackVolley){ VolleyTool.this.cbv = callBackVolley; StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { // 使用JSONObject给response转换编码 Log.d("lxl", response); if (response != null) { T bean = GsonTools.changeGsonToBean(response, cls); cbv.OnSuccessVolley(bean); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { error.printStackTrace(); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { map.put("key", "z_for_example"); return map; } }; MyApplicationTools.mQueue.add(stringRequest); }}
public interface CallBackVolley { public <T>void OnSuccessVolley(T bean); public <T>void OnFailedVolley(String message);}
模拟登陆接口:
Map<String,String> map = new HashMap<String, String>(); map.put("phonenum", "131xxxxxxxx"); map.put("captcha", "xxxx"); VolleyTool volleyTool = new VolleyTool(this); volleyTool.setCallBack(LOGIN_URL, map, LoginMessage.class, new CallBackVolley() { @Override public <T> void OnSuccessVolley(T bean) { LoginMessage loginMessage = (LoginMessage) bean; if (loginMessage.result == 1) { //登陆成功 }else{ //登陆失败 } } @Override public <T> void OnFailedVolley(String message) { //请求失败 } });
bean:
public class LoginMessage { public String message; public int result; public String userId;}
阅读全文
0 0
- 如何运用回调和泛型来简洁代码
- Entity回调和监听器
- 回调和监听
- 明白回调和委托
- 代码简洁
- 简洁代码
- MicrosoftAjax.Function.js 中用call 和apply方法实现回调和委托的代码
- 如何上传本地代码到github-简洁版
- 接口回调和向上转型
- 代码之美-简洁
- 简洁代码之哲学
- 简洁的代码
- 布局简洁代码写法
- 代码需要简洁
- 关于代码简洁
- 代码简洁之道
- 简洁的heap代码
- 简洁界面代码助手
- C++Primer读书笔记——变量和基本类型补充
- 安装MongoDB并安装PyCharm的MongoDB插件
- crontab使用
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- 时间序列的算法ARMA算法的参数设定的问题
- 如何运用回调和泛型来简洁代码
- javase-关键字、标识符
- Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件
- 浏览器出现代理服务器拒绝连接的解决办法
- csrf攻击过程 csrf攻击说明 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站
- 一步一步学多线程-synchronized
- 翻转二叉树-LintCode
- 并发编程6:CopyOnWriteArrayList 的写时复制
- cnt