经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Android开发——获得Json数据,并显示图片 - Stars-one
来源:cnblogs  作者:Stars-one  时间:2018/12/10 9:37:07  对本文有异议

流程介绍

  1. 使用okhttp网络框架进行get请求,获得json数据

    1. //一个封装好的工具类的静态方法
    2. public static void sendOkHttpRequest(final String address, final okhttp3.Callback callback) {
    3. OkHttpClient client = new OkHttpClient();
    4. CacheControl control =new CacheControl.Builder().build();
    5. Request request = new Request.Builder()
    6. .cacheControl(control)
    7. .url(address)
    8. .build();
    9. client.newCall(request).enqueue(callback);
    10. }

    之后我们调用这个方法可以访问网站,并获得返回的数据

    1. HttpUtil.sendOkHttpRequest("http://www.baidu.com" + limit, new Callback() {
    2. @Override
    3. public void onFailure(Call call, IOException e) {
    4. Toast.makeText(MainActivity.this, "网络错误", Toast.LENGTH_SHORT).show();
    5. }
    6. @Override
    7. public void onResponse(Call call, Response response) throws IOException {
    8. //获得返回的数据(按照我的例子,访问百度,返回来的数据其实就是html文件里面的内容
    9. //如果是其他网站,就是返回其定义返回的数据类型)
    10. String result = response.body().string();
    11. //调用GSON框架解析json数据,处理完毕后返回一个该相关类的List
    12. List<Data.ResBean> mlist = HttpUtil.parseJSONWithGSON(result);
    13. //之后对返回的数据进行处理或者是调用
    14. mlist.get(1).getXXX();//相关属性的调用
    15. }
    16. });
  2. 使用GSONFormat插件将json数据抽象为实体类(插件自动生成)

    去Android Studio里面搜索GSONFormat插件,安装重启之后,写一个类,然后直接按下alt+Ins,选择GSONFormat,之后输入json数据,就可以获得一个对应的实体类了

  3. 使用GSON框架,解析json数据,获得实体类

    下面的方法可以根据自己的需要写

    1. /**
    2. * 调用GSON解析json数据
    3. * @param jsonData json数据
    4. * @return 返回图片实体类list
    5. */
    6. public static List<Data.ResBean> parseJSONWithGSON(String jsonData) {
    7. //使用轻量级的Gson解析得到的json
    8. Gson gson = new Gson();
    9. Data data = gson.fromJson(jsonData, Data.class);
    10. List<Data.ResBean> mlist = data.getRes();
    11. return mlist;
    12. }
  4. 调用所需要的属性即可

    对象调用get方法即可获得相关的属性,自己需要什么就调用什么,这里就不多说了。

  5. 使用Glide等图片框架加载网络图片

    1. Glide.with(context).load(url).into(imageView);

    我使用的是另外一款Ion显示图片框架,因为之前使用Glide有些bug,第一次可以加载,但刷新数据之后就无法显示了,可能是因为我使用的Glide3.0版本吧,然后觉得Glide4.0版本使用有些懵,就选择了Ion,感觉和Glide差不多,之前的那个bug也是得以解决,就没有想太多了

    1. Ion.with(holder.imageView.getContext())
    2. .load(url)
    3. .withBitmap()
    4. .placeholder(R.drawable.grey)
    5. .intoImageView(holder.imageView);
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号