欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发——获得Json数据,并显示图片

程序员文章站 2023-11-10 22:03:46
流程介绍 1. 使用 网络框架进行 请求,获得 数据 //一个封装好的工具类的静态方法 public static void sendOkHttpRequest(final String address, final okhttp3.Callback callback) { OkHttpClient ......

流程介绍

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

     //一个封装好的工具类的静态方法
     public static void sendokhttprequest(final string address, final okhttp3.callback callback) {
         okhttpclient client = new okhttpclient();
         cachecontrol control =new cachecontrol.builder().build();
         request request = new request.builder()
                 .cachecontrol(control)
                 .url(address)
                 .build();
         client.newcall(request).enqueue(callback);
    
     }

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

     httputil.sendokhttprequest("http://www.baidu.com" + limit, new callback() {
         @override
         public void onfailure(call call, ioexception e) {
             toast.maketext(mainactivity.this, "网络错误", toast.length_short).show();
         }
         @override
         public void onresponse(call call, response response) throws ioexception {
             //获得返回的数据(按照我的例子,访问百度,返回来的数据其实就是html文件里面的内容
             //如果是其他网站,就是返回其定义返回的数据类型)
             string result = response.body().string();
             //调用gson框架解析json数据,处理完毕后返回一个该相关类的list
             list<data.resbean> mlist = httputil.parsejsonwithgson(result);
             //之后对返回的数据进行处理或者是调用
             mlist.get(1).getxxx();//相关属性的调用
         }
     });
  2. 使用gsonformat插件将json数据抽象为实体类(插件自动生成)

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

    Android开发——获得Json数据,并显示图片

    Android开发——获得Json数据,并显示图片

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

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

      /**
      * 调用gson解析json数据
      * @param jsondata json数据
      * @return 返回图片实体类list
      */
     public static list<data.resbean> parsejsonwithgson(string jsondata) {
         //使用轻量级的gson解析得到的json
         gson gson = new gson();
         data data = gson.fromjson(jsondata, data.class);
         list<data.resbean> mlist = data.getres();
         return mlist;
     }
  4. 调用所需要的属性即可

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

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

     glide.with(context).load(url).into(imageview);

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

          ion.with(holder.imageview.getcontext())
                     .load(url)
                     .withbitmap()
                     .placeholder(r.drawable.grey)
                     .intoimageview(holder.imageview);