今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 發現自定義GsonRequest那塊代碼不全, 在這裏貼一個全的。git
public class GsonRequest<T> extends Request<T> { private Gson mGson; private Class mJavaClass; private Response.Listener<T> mListener; public GsonRequest(int method, String url, Class<T> cls, String requestBody, Response.Listener<T> slistener, Response.ErrorListener listener) { super(method, url, listener); mJavaClass = cls; mListener = slistener; mGson = new Gson(); } @Override protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); T parsedGSON = (T) mGson.fromJson(jsonString, mJavaClass); return Response.success(parsedGSON, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException je) { return Response.error(new ParseError(je)); } } @Override protected void deliverResponse(T response) { mListener.onResponse(response); }
簡單說明一下幾個fields的做用。github
mJavaClass是在經過Json反序列化成對象時使用;json
mListener裏面onResponse是處理正確返回值的回調函數;ide
具體的實現也能夠參考Volley中JsonRequest類。函數