1. 程式人生 > >Android開發——獲得Json資料,並顯示圖片

Android開發——獲得Json資料,並顯示圖片

流程介紹

  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資料,就可以獲得一個對應的實體類了

  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);