【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);
}
}