Volley 二次封装

【8】Volley 的二次封装

  • Volley封装返回一个Gson

  • Volley封装返回一个图片设置到Imageview上

  • Volley封装取消请求

import android.animation.ObjectAnimator;

import android.content.Context;

import android.widget.ImageView;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.toolbox.ImageLoader;

import com.android.volley.toolbox.Volley;

/**

*

* 对Volley的二次封装

*/





public class VolleyHelper {

    RequestQueue queue;

    VolleyCache volleyCache = new VolleyCache();

    ImageLoader imageLoader = new ImageLoader(queue, volleyCache);

    private static VolleyHelper mInstance = null;

    private VolleyHelper(Context context){

        queue = Volley.newRequestQueue(context);

    }





    public static VolleyHelper create(Context context){

        if(mInstance==null){

            mInstance = new VolleyHelper(context);

        }

         return mInstance;

    }





    public void cancelRequest(Object tag){

        queue.cancelAll(tag);

    }





    public <T> void execRequest(String url,Class<T> clazz, Response.Listener<T> success,

                                Response.ErrorListener error){

        execRequest(url,null,clazz,success,error);

    }





    /**

     * 执行请求的方法

     * @param url

     * @param clazz

     * @param success

     * @param error

     * @param <T>

     */

    public <T> void execRequest(String url, Object tag, Class<T> clazz, Response.Listener<T> success,

                                Response.ErrorListener error){

        GsonRequest<T> tGsonRequest = new GsonRequest<>(url, clazz, success, error);

        if(tag!=null){

            tGsonRequest.setTag(tag);

        }

        queue.add(tGsonRequest);

    }





    /**

     * 加载图片的方法

     * @param url

     * @param imageView

     */

    public void loadImage(String url, ImageView imageView){

        ImageLoader.ImageListener listener = ImageLoader.getImageListener(imageView, R.mipmap.ic_launcher, R.mipmap.ic_launcher);

        imageLoader.get(url,listener);

    }

}

  • Volley请求返回一个Gson

import com.android.volley.NetworkResponse;

import com.android.volley.Request;

import com.android.volley.Response;

import com.android.volley.toolbox.HttpHeaderParser;

import com.google.gson.Gson;

import java.io.UnsupportedEncodingException;

public class GsonRequest<T> extends Request<T>{

    private Class<T> clazz;

    private Response.Listener<T> mListener;

    public GsonRequest(String url,Class<T> clazz, Response.Listener<T> mListener,Response.ErrorListener listener) {

        super(Method.GET, url, listener);

        this.clazz = clazz;

        this.mListener = mListener;

    }

    @Override

    protected Response<T> parseNetworkResponse(NetworkResponse response) {

        String parsed;

        try {

            parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));

        } catch (UnsupportedEncodingException e) {

            parsed = new String(response.data);

        }

        //将json字符串解析为javabean

        T t = new Gson().fromJson(parsed, clazz);





        return Response.success(t, HttpHeaderParser.parseCacheHeaders(response));

    }

    @Override

    protected void deliverResponse(T response) {

        mListener.onResponse(response);

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值