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

首頁 > 系統(tǒng) > Android > 正文

Android基于OkHttpUtils網(wǎng)絡(luò)請求的二次封裝

2019-10-23 18:35:50
字體:
供稿:網(wǎng)友

OkHttpUtils網(wǎng)絡(luò)請求為什么進(jìn)行二次封裝

1、減少代碼量
2、后期換網(wǎng)絡(luò)處理框架方便

二次封裝的實(shí)現(xiàn)原理

1、將網(wǎng)絡(luò)請求提取在一個(gè)方法中
2、對里面的可變參數(shù),可以通過參數(shù)傳遞過去,也可以提供一個(gè)set方法傳遞過去
3、對于請求失敗和成功,我們可以使用接口回調(diào),讓調(diào)用該方法的對象處理

封裝后的網(wǎng)絡(luò)處理類的功能

1、網(wǎng)絡(luò)請求
2、xml數(shù)據(jù)轉(zhuǎn)換成javaBean

每一個(gè)處理網(wǎng)絡(luò)請求的ListView都要處理的3數(shù)據(jù)方法

1、初始化數(shù)據(jù)
2、下拉刷新數(shù)據(jù)
3、上拉加載數(shù)據(jù)

封裝前的代碼

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

封裝后的代碼

/**  * 3,加載更多  * 注意事項(xiàng):  * 請求成功數(shù)據(jù)更新之后,要關(guān)閉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) {     //獲取刷新的數(shù)據(jù)集合     List<News> list = newsList.getList();     //健壯性判斷     if (list != null && list.size() > 0) {      //更新數(shù)據(jù)集合      mData.addAll(list);      //更新適配器      mMyNewsPagerAdapter.notifyDataSetChanged();      //更新頁數(shù)的索引值      mCurrentPageIndex ++ ;     }    }   }  }); }

網(wǎng)絡(luò)封裝的代碼

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大渡口区| 碌曲县| 宁河县| 淮阳县| 嘉鱼县| 葫芦岛市| 彭泽县| 社会| 尚志市| 石狮市| 瑞安市| 河津市| 广德县| 榕江县| 东方市| 卢氏县| 淮北市| 和顺县| 会宁县| 深泽县| 东阿县| 桐乡市| 城口县| 滦南县| 秀山| 南阳市| 玉山县| 砚山县| 时尚| 甘肃省| 固原市| 长岭县| 新巴尔虎右旗| 亚东县| 若尔盖县| 耿马| 杭锦旗| 德化县| 扎赉特旗| 江口县| 贵阳市|