Volley的使用

来源:互联网 发布:新大洋知豆电动汽车 编辑:程序博客网 时间:2024/05/20 04:50

Volley框架是用来处理android中大量http请求的。

主要就是XXXRequest的使用,它的构造函数中,最主要的参数就是url,Listener(Response.Listener和Response.errorListener)。其中url表示地址,Listener表示请求结果返回时要做的操作。

new ImageRequest(ImageUrl,            new Response.Listener<Bitmap>() {        @Override        public void onResponse(Bitmap bitmap) {            volleyImage.setImageBitmap(bitmap);        }    },            300,            200,            Bitmap.Config.ALPHA_8,            new Response.ErrorListener() {        @Override        public void onErrorResponse(VolleyError volleyError) {            volleyImage.setImageResource(R.drawable.localimage);        }    });
这是一个Image的请求,它的构造参数有Url,Listener,以及图片的参数。

ImageRequest这个类继承自Request<T>,可以自己定义一个类继承它来解析制定的数据。

public class GetJsonRequest extends Request<Employee> {    private ResponseListener listener;    private Gson gson;    private Type type;    public GetJsonRequest(String url,Type type, ResponseListener listener) {        super(Method.GET, url, listener);        this.listener = listener;        this.type = type;        gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();    }    @Override    protected Response<Employee> parseNetworkResponse(NetworkResponse networkResponse) {        Employee result;        try {            String jsonString = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers));            result = gson.fromJson(jsonString,type);            return Response.success(result,HttpHeaderParser.parseCacheHeaders(networkResponse));        } catch (UnsupportedEncodingException e) {            e.printStackTrace();            return Response.error(new ParseError(e));        }    }    @Override    protected void deliverResponse(Employee response) {        listener.onResponse(response);    }}
GetJsonRequest 类用来请求JSON数据,并且把返回的JSON数组转化成实体。这里的ResponseListener接口继承了Response.Listener和Response.errorListener。
public interface ResponseListener extends Response.ErrorListener,Response.Listener<Employee> {}

使用GetJsonRequest 的时候应该这样调用:
new GetJsonRequest(JsonUrl, new TypeToken<Employee>() {    }.getType(), new ResponseListener() {        @Override        public void onErrorResponse(VolleyError volleyError) {        }        @Override        public void onResponse(Employee employee) {            jsonStr.setText(employee.getEmployee_id()+" "+employee.getEmployee_name()+""+employee.getEmployee_password());        }    });

0 0