国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android基于OkHttpUtils網絡請求的二次封裝

2019-12-12 03:30:10
字體:
來源:轉載
供稿:網友

OkHttpUtils網絡請求為什么進行二次封裝

1、減少代碼量
2、后期換網絡處理框架方便

二次封裝的實現原理

1、將網絡請求提取在一個方法中
2、對里面的可變參數,可以通過參數傳遞過去,也可以提供一個set方法傳遞過去
3、對于請求失敗和成功,我們可以使用接口回調,讓調用該方法的對象處理

封裝后的網絡處理類的功能

1、網絡請求
2、xml數據轉換成javaBean

每一個處理網絡請求的ListView都要處理的3數據方法

1、初始化數據
2、下拉刷新數據
3、上拉加載數據

封裝前的代碼

 /**  * 3,加載更多  * 注意事項:  * 請求成功數據更新之后,要關閉SpringView  */ private void onDealLoadmore() {  //資訊的網絡請求地址  String newsUrl = Constant.NEWS_URL;  //http://www.oschina.net/action/api/news_list?pageIndex=0&catalog=1&pageSize=20  //關閉SpringView  mSpringView.onFinishFreshAndLoad();  //網絡請求  OkHttpUtils    .get()    .url(newsUrl)    .addParams("pageIndex", mCurrentPageIndex + "")//固定    .addParams("catalog", "1")//固定,1代表資訊    .addParams("pageSize", "20")//因為,一頁加載20條數據    .build()    .execute(new StringCallback() {     @Override     public void onError(Call call, Exception e, int id) {      Toast.makeText(mContext, "上拉加載失敗", Toast.LENGTH_SHORT).show();      /* //關閉SpringView      mSpringView.onFinishFreshAndLoad();*/     }     @Override     public void onResponse(String response, int id) {      //請求成功,將字符串轉為javaBean,并獲取里面的泛型為News的集合      NewsList newsList = XmlUtils.toBean(NewsList.class, response.getBytes());      //對請求的數據進行非空判斷      if (newsList != null) {       List<News> list = newsList.getList();       if (list != null && list.size() > 0) {        //數據的更新        mData.addAll(newsList.getList());        //適配器的更新        mMyNewsPagerAdapter.notifyDataSetChanged();        //請求頁的索引要加1        ++mCurrentPageIndex;        /* //關閉SpringView        mSpringView.onFinishFreshAndLoad();*/       }      }     }    }); }

封裝后的代碼

/**  * 3,加載更多  * 注意事項:  * 請求成功數據更新之后,要關閉SpringView  */ private void onDealLoadmore() {  mSpringView.onFinishFreshAndLoad();  mNewsPagerProtocol.setCurrentPageIndex(mCurrentPageIndex);  mNewsPagerProtocol.loadData(new NewsPagerProtocol.Callback() {   @Override   public void onError(Call call, Exception e, int id) {    Toast.makeText(mContext, "下拉刷新失敗", Toast.LENGTH_SHORT).show();   }   @Override   public void onResponse(NewsList newsList, int id) {    if (newsList != null) {     //獲取刷新的數據集合     List<News> list = newsList.getList();     //健壯性判斷     if (list != null && list.size() > 0) {      //更新數據集合      mData.addAll(list);      //更新適配器      mMyNewsPagerAdapter.notifyDataSetChanged();      //更新頁數的索引值      mCurrentPageIndex ++ ;     }    }   }  }); }

網絡封裝的代碼

/** * Author:  歸零 * Date:  2017/3/4 1:08 * Email:  4994766@qq.com * Description:網絡請求和數據解析 */public class NewsPagerProtocol { private int mCurrentPageIndex; public void setCurrentPageIndex(int currentPageIndex) {  mCurrentPageIndex = currentPageIndex; } public void loadData(final Callback callback) {  //資訊的網絡請求地址  String newsUrl = Constant.NEWS_URL;  //http://www.oschina.net/action/api/news_list?pageIndex=0&catalog=1&pageSize=20  //網絡請求  OkHttpUtils    .get()    .url(newsUrl)    .addParams("pageIndex", mCurrentPageIndex + "")//固定    .addParams("catalog", "1")//固定,1代表資訊    .addParams("pageSize", "20")//因為,一頁加載20條數據    .build()    .execute(new StringCallback() {     @Override     public void onError(Call call, Exception e, int id) {      //因為返回失敗處理的請求不一樣,所以不處理,交給調用的方法處理      callback.onError(call, e, id);     }     @Override     public void onResponse(String response, int id) {      //請求成功,將字符串轉為javaBean,并獲取里面的泛型為News的集合      NewsList newsList = XmlUtils.toBean(NewsList.class, response.getBytes());      //將轉換后的數據通過接口回調,返回給調用方法的      callback.onResponse(newsList, id);     }    }); } public interface Callback {  public void onError(Call call, Exception e, int id);  public void onResponse(NewsList newsList, int id); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦旗| 焦作市| 平顺县| 博兴县| 邵武市| 罗田县| 新余市| 环江| 宜兰县| 宣汉县| 鄂伦春自治旗| 长宁区| 英德市| 阳新县| 东丽区| 高尔夫| 台南县| 微博| 邵阳市| 南汇区| 和政县| 通山县| 英吉沙县| 桐梓县| 永和县| 全州县| 遵化市| 信宜市| 北安市| 洪湖市| 郓城县| 晋江市| 克拉玛依市| 商都县| 乌苏市| 那坡县| 竹北市| 辽宁省| 乾安县| 辽宁省| 鄂州市|