Android開發——得到Json數據,並顯示圖片

流程介紹

  1. 使用okhttp網絡框架進行get請求,得到json數據html

    //一個封裝好的工具類的靜態方法
     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);
    
     }

    以後咱們調用這個方法能夠訪問網站,並得到返回的數據json

    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數據,就能夠得到一個對應的實體類了框架

  3. 使用GSON框架,解析json數據,得到實體類ide

    下面的方法能夠根據本身的須要寫工具

    /**
      * 調用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方法便可得到相關的屬性,本身須要什麼就調用什麼,這裏就很少說了。ui

  5. 使用Glide等圖片框架加載網絡圖片this

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

    我使用的是另一款Ion顯示圖片框架,由於以前使用Glide有些bug,第一次能夠加載,但刷新數據以後就沒法顯示了,多是由於我使用的Glide3.0版本吧,而後以爲Glide4.0版本使用有些懵,就選擇了Ion,感受和Glide差很少,以前的那個bug也是得以解決,就沒有想太多了url

    Ion.with(holder.imageView.getContext())
                     .load(url)
                     .withBitmap()
                     .placeholder(R.drawable.grey)
                     .intoImageView(holder.imageView);
相關文章
相關標籤/搜索