NetLoader的二次封装——返回实体类

上一张给大家封装了okHttp,线程和网络请求大家不用管理,直接传入参数就可以了,但是唯一不足的就是返回的数据类型是String,这次为大家对Netloader进行了二次封装

下面是演示的代码

ResultUtils.getInstance().loadOrdinaryResult(url, list,new TypeToken<Result<User>>() {
        }.getType() ,new ResultListener<Result<User>>() {

            @Override
            public void success(Result<User> t) {
                if (MsgToast.mToast(LoginActivity.this, t)) {
                    Toast.makeText(LoginActivity.this, "登录成功", 2000).show();
                }
                
            }

            @Override
            public void fail(String failString, Exception e) {
                Toast.makeText(LoginActivity.this, failString, 2000).show();
                
            }
        });

是不是很简单那?直接返回的就是你想要的实体类,这样的方法使用要求大家对java泛型有一定的了解才能使用明白

以下贴出二次封装的源码基于上一章讲解的Netloader封装的,如果nicopy源码出现错误,请回顾上一张

package com.wolf.mirror.utils;

import java.lang.reflect.Type;
import java.util.List;

import org.apache.http.message.BasicNameValuePair;

import com.google.gson.Gson;
import com.wolf.mirror.utils.NetLoader.NetResponseListener;

public class ResultUtils {
    public static ResultUtils utils;
    private Gson gson;

    private ResultUtils() {
        gson = new Gson();
    }

    public static ResultUtils getInstance() {
        if (utils == null) {
            utils = new ResultUtils();

        }
        return utils;
    }

    // get请求返回实体类
    public <T> void LoadGetResult(String url, final Type type,final ResultListener<T> listener) {
        NetLoader.getInstance().loadGetData(url, new NetResponseListener() {

            @Override
            public void success(String resultString) {
                T t = gson.fromJson(resultString, type);
                if (t != null) {
                    listener.success(t);
                }
            }

            @Override
            public void fail(String failString, Exception e) {
                listener.fail(failString, e);
            }
        });
    }

    // 普通post请求返回实体类
    public <T> void loadOrdinaryResult(String url,
            List<BasicNameValuePair> list,final Type type , final ResultListener<T> listener) {
        NetLoader.getInstance().loadOrdinaryPostData(url,
                new NetResponseListener() {

                    @Override
                    public void success(String resultString) {
                        T t = gson.fromJson(resultString, type);
                        if (t != null) {
                            listener.success(t);
                        }

                    }

                    @Override
                    public void fail(String failString, Exception e) {
                        listener.fail(failString, e);
                    }
                }, list);
    }

    // 上传文件返回实体类
    public <T> void loadPostFilesResult(String url, String[] filekeys,
            String[] filePaths, final Type type,final ResultListener<T> listener) {
        NetLoader.getInstance().loadPostFilesData(url, filekeys, filePaths,
                new NetResponseListener() {

                    @Override
                    public void success(String resultString) {
                        T t = gson.fromJson(resultString, type);
                        if (t != null) {
                            listener.success(t);
                        }
                    }

                    @Override
                    public void fail(String failString, Exception e) {
                        listener.fail(failString, e);
                    }
                });
    }

    // 上传文件携带参数
    public <T> void loadPostParamsWithFilesResult(String url,
            String[] filekeys, String[] filePaths,
            List<BasicNameValuePair> list, final Type type,final ResultListener<T> listener) {
        NetLoader.getInstance().loadPostParamsWithFiles(url, filekeys,
                filePaths, new NetResponseListener() {

                    @Override
                    public void success(String resultString) {
                        T t = gson.fromJson(resultString, type);
                        if (t != null) {
                            listener.success(t);
                        }
                    }

                    @Override
                    public void fail(String failString, Exception e) {
                        listener.fail(failString, e);
                    }
                }, list);
    }

    public <T> void loadPostDataWithCookie(String url, String json,
            String cookiekey, String cookie, final Type type,final ResultListener<T> listener) {
        NetLoader.getInstance().loadPostDataWithCokkie(url, json, cookiekey,
                cookie, new NetResponseListener() {

                    @Override
                    public void success(String resultString) {
                        T t = gson.fromJson(resultString, type);
                        if (t != null) {
                            listener.success(t);
                        }
                    }

                    @Override
                    public void fail(String failString, Exception e) {
                        listener.fail(failString, e);
                    }
                });
    }

    public interface ResultListener<T> {
        void success(T t);

        void fail(String failString, Exception e);
    }

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值