RetrofitService類
一藏澳、public interfaceRetrofitService {
//請(qǐng)求方式為GET常拓,參數(shù)為basil2style颈嚼,因?yàn)闆](méi)有變量所以下面getString方法也不需要參數(shù)
@GET("txt/car.json")
//定義返回的方法,返回的響應(yīng)體使用了ResponseBody
CallgetString();
}
二灾而、GsonUtils類封裝
**
* Gson工具類
* 1,把json轉(zhuǎn)換成Object
* 2,把Object轉(zhuǎn)換成json
* 3,該方法主要功能是將json字符串轉(zhuǎn)換成指定類型的對(duì)象
*/
public final classGsonUtils {
/**
* 工具類對(duì)象
* (單例)
*/
private static finalGsonUtilsgsonUtils=newGsonUtils();
/**
* Gson對(duì)象
*/
private static finalGsongson=newGson();
/**
* 私有構(gòu)造
*/
privateGsonUtils() {
}
/**
* 對(duì)外提供靜態(tài)公有的方法
*
*@return本類對(duì)象
*/
public staticGsonUtilsgetInstance() {
returngsonUtils;
}
/**
* 1胡控,該方法主要功能是將json字符串轉(zhuǎn)換成Java類對(duì)象
*
*@paramjson
*? ? ? ? ? ? json字符串
*@paramcls
*? ? ? ? ? ? Java類的字節(jié)碼對(duì)象
*@return解析后的Java類對(duì)象
*@throwsException
*? ? ? ? ? ? 如果解析中出了問(wèn)題,或者是json不完整都會(huì)拋出這個(gè)異常信息
*/
publicTj2O(String json,Class cls)throwsException {
returngson.fromJson(json,cls);
}
/**
* 2旁趟,該方法主要功能是將Java類對(duì)象轉(zhuǎn)換成json字符串
*
*@paramobj
*? ? ? ? ? ? Java對(duì)象
*@returnjson字符串
*/
publicStringo2J(Object obj) {
returngson.toJson(obj);
}
/**
* 3,該方法主要功能是將json字符串轉(zhuǎn)換成指定類型的對(duì)象
*
*@paramjson
*? ? ? ? ? ? json字符串
*@paramtypeOfT
*? ? ? ? ? ? 指定類型
*@return指定類型的對(duì)象
*/
publicTj2T(String json,Type typeOfT)throwsException {
returngson.fromJson(json,typeOfT);
}
}
三昼激、RetrofitAdapter
public classRetrofitAdapterextendsBaseAdapter {
Listdata;
ContextmCtx;
publicRetrofitAdapter(Context mCtx,List data) {
this.mCtx= mCtx;
this.data= data;
}
@Override
public intgetCount() {
if(data!=null) {
returndata.size();
}
return0;
}
@Override
publicObjectgetItem(intposition) {
returndata.get(position);
}
@Override
public longgetItemId(intposition) {
returnposition;
}
@Override
publicViewgetView(intposition,View convertView,ViewGroup viewGroup) {
ViewHolder holder;
if(convertView ==null) {
//把條目布局轉(zhuǎn)化為view對(duì)象
convertView = View.inflate(mCtx,R.layout.item_retrofit, null);
//初始化holder對(duì)象,并初始化holder中的控件
holder =newViewHolder(convertView);
convertView.setTag(holder);
}else{
//如果當(dāng)前view存在,則直接從中取出其保存的控件及數(shù)據(jù)
holder = (ViewHolder) convertView.getTag();
}
//通過(guò)position獲取當(dāng)前item的car數(shù)據(jù)橙困,從car數(shù)據(jù)中取出title瞧掺、pubDate和image
CarBean.DataBean car =data.get(position);
holder.llTvTitle.setText(car.getTitle());
holder.llTvTime.setText(car.getPubDate());
//使用SmartImageView的setImageUrl方法下載圖片
//? holder.ll_iv_async.setImageUrl(car.image);
Picasso.with(mCtx).load(car.getImage()).into(holder.llIvRetrofit);
returnconvertView;
}
classViewHolder {
@InjectView(R.id.ll_iv_retrofit)
ImageViewllIvRetrofit;
@InjectView(R.id.ll_tv_title)
TextViewllTvTitle;
@InjectView(R.id.ll_tv_time)
TextViewllTvTime;
ViewHolder(View view) {
ButterKnife.inject(this,view);
}
}
}
四、Retrofit2Activity
public classRetrofit2ActivityextendsActivity {
@InjectView(com.tjhq.mygson.R.id.lv_retrofit_gson)
ListViewlvRetrofitGson;
Listdata;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(com.tjhq.mygson.R.layout.activity_retrofit2);
ButterKnife.inject(this);
initData();
}
private voidinitData() {
initRetrofit();
}
private voidinitRetrofit() {
//獲取Retrofit對(duì)象凡傅,設(shè)置地址
Retrofit retrofit =newRetrofit.Builder()
.baseUrl(Constant.BASEURL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitService retrofitService = retrofit.create(RetrofitService.class);
retrofitService.getString().enqueue(newCallback() {
@Override
public voidonResponse(Call call,Response response) {
//注意這里是拿到的對(duì)象需要轉(zhuǎn)換辟狈,千萬(wàn)不要 String s = response.body().toString();這樣是很?chē)?yán)重錯(cuò)誤。
//解析一定要把對(duì)象轉(zhuǎn)成json夏跷,初學(xué)者可能這地方有的會(huì)出錯(cuò)
String result = GsonUtils.getInstance().o2J(response.body());
Log.e("TAG","獲取數(shù)據(jù)"+result);
Gson gson =newGson();
CarBean carBean = gson.fromJson(result,CarBean.class);
Log.e("TAG","===="+carBean.getPageNo()+"===="+carBean.getPageSize()+"===="+carBean.getTotal());
data=carBean.getData();
RetrofitAdapter retrofitAdapter =newRetrofitAdapter(Retrofit2Activity.this,data);
lvRetrofitGson.setAdapter(retrofitAdapter);
}
@Override
public voidonFailure(Call call,Throwable t) {
}
});
}}
五哼转、CarBean 類
public class CarBean {
/**
* data : [{"articleType":"n","count":29,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/8/14733163729178590_600.jpg","id":"8562073","image":"http://img0.pcauto.com.cn/pcauto/1609/08/g_8562073_1473339813478_240x160.jpg","mtime":1473351348000,"pubDate":"2016-09-09","title":"新福特翼虎購(gòu)車(chē)手冊(cè) 家用中配足夠?qū)嵱?,"ups":26,"url":"http://www.pcauto.com.cn/teach/856/8562073.html"},{"articleType":"n","count":37,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1608/31/8655654_toutu_thumb.jpg","id":"8655654","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8655654_1472800030976_240x160.jpg","mtime":1473351337000,"pubDate":"2016-09-09","title":"年輕人第一臺(tái)車(chē) 10萬(wàn)左右精品車(chē)型推薦","ups":130,"url":"http://www.pcauto.com.cn/teach/865/8655654.html"},{"articleType":"n","count":35,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1609/06/8719572_toutu_thumb.jpg","id":"8719572","image":"http://img0.pcauto.com.cn/pcauto/1609/06/g_8719572_1473152785181_240x160.jpg","mtime":1473264982000,"pubDate":"2016-09-08","title":"豪門(mén)不\u201c壕\u201d 4款入門(mén)豪華SUV僅售23萬(wàn)起","ups":143,"url":"http://www.pcauto.com.cn/teach/871/8719572.html"},{"articleType":"n","count":40,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/1/14727375445822660_600.jpg","id":"8705572","image":"http://img0.pcauto.com.cn/pcauto/1609/07/g_8705572_1473242245557_240x160.jpg","mtime":1473264969000,"pubDate":"2016-09-08","title":"明銳對(duì)比英朗 當(dāng)歐洲紳士遇上美國(guó)大漢","ups":52,"url":"http://www.pcauto.com.cn/teach/870/8705572.html"},{"articleType":"n","count":68,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/6/14731526553913750_600.jpg","id":"8719262","image":"http://img0.pcauto.com.cn/pcauto/1609/06/g_8719262_1473151845818_240x160.jpg","mtime":1473153591000,"pubDate":"2016-09-06","title":"新晉英倫長(zhǎng)軸距座駕 捷豹XFL實(shí)拍解析","ups":299,"url":"http://www.pcauto.com.cn/teach/871/8719262.html"},{"articleType":"n","count":100,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1609/07/8695292_999_thumb.jpg","id":"8695292","image":"http://img0.pcauto.com.cn/pcauto/1609/01/g_8695292_1472695974218_240x160.jpg","mtime":1473137438000,"pubDate":"2016-09-06","title":"15萬(wàn)元搞定 四款獨(dú)立后懸掛合資SUV推薦","ups":117,"url":"http://www.pcauto.com.cn/teach/869/8695292.html"},{"articleType":"n","count":84,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1609/06/8718677_xin1000_thumb.jpg","id":"8718677","image":"http://img0.pcauto.com.cn/pcauto/1609/05/g_8718677_1473061488223_240x160.jpg","mtime":1473092132000,"pubDate":"2016-09-06","title":"8萬(wàn)元選靠譜SUV 4款新推自主車(chē)型推薦","ups":91,"url":"http://www.pcauto.com.cn/teach/871/8718677.html"},{"articleType":"n","count":96,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20168/29/14724733055558460_600.jpg","id":"8683971","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8683971_1472803720871_240x160.jpg","mtime":1473005791000,"pubDate":"2016-09-05","title":"凱美瑞對(duì)比雅閣 誰(shuí)才是日系中級(jí)車(chē)霸主","ups":65,"url":"http://www.pcauto.com.cn/teach/868/8683971.html"},{"articleType":"n","count":136,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1609/04/8716791_00_thumb.jpg","id":"8716791","image":"http://img0.pcauto.com.cn/pcauto/1609/04/g_8716791_1473002216143_240x160.jpg","mtime":1473005746000,"pubDate":"2016-09-05","title":"精華都在這里 成都車(chē)展最值得關(guān)注的SUV","ups":390,"url":"http://www.pcauto.com.cn/teach/871/8716791.html"},{"articleType":"n","count":26,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/4/14729794978954170_600.jpg","id":"8716391","image":"http://img0.pcauto.com.cn/pcauto/1609/04/g_8716391_1472979896686_240x160.jpg","mtime":1472980188000,"pubDate":"2016-09-04","title":"2016成都車(chē)展:靜態(tài)評(píng)測(cè)奔馳新一代威霆","ups":312,"url":"http://www.pcauto.com.cn/teach/871/8716391.html"},{"articleType":"n","count":32,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1609/01/8700555_8207206_03_thumb.jpg","id":"8700555","image":"http://img0.pcauto.com.cn/pcauto/1609/01/g_8700555_1472716638381_240x160.jpg","mtime":1472919329000,"pubDate":"2016-09-04","title":"入門(mén)性價(jià)比爆炸 新款致炫購(gòu)車(chē)手冊(cè)","ups":91,"url":"http://www.pcauto.com.cn/teach/870/8700555.html"},{"articleType":"n","count":70,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/2/14728310541595730_600.jpg","id":"8712133","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8712133_1472831164431_240x160.jpg","mtime":1472832200000,"pubDate":"2016-09-03","title":"2016成都車(chē)展:靜態(tài)評(píng)測(cè)北京現(xiàn)代勝達(dá)","ups":468,"url":"http://www.pcauto.com.cn/teach/871/8712133.html"},{"articleType":"n","count":41,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1609/02/8710078_1000_thumb.jpg","id":"8710078","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8710078_1472810381352_240x160.jpg","mtime":1472817162000,"pubDate":"2016-09-02","title":"2016成都車(chē)展:靜態(tài)評(píng)測(cè)新款瑪莎拉蒂總裁","ups":299,"url":"http://www.pcauto.com.cn/teach/871/8710078.html"},{"articleType":"n","count":62,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/2/14728116986128820_600.jpg","id":"8711094","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8711094_1472812405190_240x160.jpg","mtime":1472812618000,"pubDate":"2016-09-02","title":"2016成都車(chē)展:靜態(tài)評(píng)測(cè)大眾新桑塔納","ups":1053,"url":"http://www.pcauto.com.cn/teach/871/8711094.html"},{"articleType":"n","count":28,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/2/14728073809221840_600.jpg","id":"8710334","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8710334_1472807999865_240x160.jpg","mtime":1472808197000,"pubDate":"2016-09-02","title":"2016成都車(chē)展:靜態(tài)體驗(yàn)北京現(xiàn)代悅納","ups":247,"url":"http://www.pcauto.com.cn/teach/871/8710334.html"},{"articleType":"n","count":31,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/2/14728054816668520_600.jpg","id":"8710116","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8710116_1472805803455_240x160.jpg","mtime":1472806069000,"pubDate":"2016-09-02","title":"2016成都車(chē)展:靜態(tài)評(píng)測(cè)東南DX3","ups":247,"url":"http://www.pcauto.com.cn/teach/871/8710116.html"},{"articleType":"n","count":60,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/2/14728006933643890_600.jpg","id":"8709146","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8709146_1472801055169_240x160.jpg","mtime":1472801551000,"pubDate":"2016-09-02","title":"2016成都車(chē)展:靜態(tài)評(píng)測(cè)寶馬X1混動(dòng)版","ups":806,"url":"http://www.pcauto.com.cn/teach/870/8709146.html"},{"articleType":"n","count":87,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/2/14727918621883140_600.jpg","id":"8708181","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8708181_1472793809972_240x160.jpg","mtime":1472794520000,"pubDate":"2016-09-02","title":"2016成都車(chē)展:靜態(tài)評(píng)測(cè)東風(fēng)本田競(jìng)?cè)?,"ups":533,"url":"http://www.pcauto.com.cn/teach/870/8708181.html"},{"articleType":"n","count":34,"downs":0,"firstImg":"http://img0.pcauto.com.cn/pcauto/1609/02/8704693_toutu_thumb.jpg","id":"8704693","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8704693_1472787714022_240x160.jpg","mtime":1472793542000,"pubDate":"2016-09-02","title":"沖擊市場(chǎng)有力競(jìng)爭(zhēng)者 新科沃茲購(gòu)車(chē)手冊(cè)","ups":117,"url":"http://www.pcauto.com.cn/teach/870/8704693.html"},{"articleType":"n","count":111,"downs":0,"firstImg":"http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/2/14727803654960920_600.jpg","id":"8706132","image":"http://img0.pcauto.com.cn/pcauto/1609/02/g_8706132_1472781925547_240x160.jpg","mtime":1472781940000,"pubDate":"2016-09-02","title":"7座對(duì)標(biāo)漢蘭達(dá) 斯柯達(dá)KODIAQ實(shí)拍解析","ups":104,"url":"http://www.pcauto.com.cn/teach/870/8706132.html"}]
* pageNo : 1
* pageSize : 20
* total : 200
*/
private intpageNo;
private intpageSize;
private inttotal;
privateListdata;
public intgetPageNo() {
returnpageNo;
}
public voidsetPageNo(intpageNo) {
this.pageNo= pageNo;
}
public intgetPageSize() {
returnpageSize;
}
public voidsetPageSize(intpageSize) {
this.pageSize= pageSize;
}
public intgetTotal() {
returntotal;
}
public voidsetTotal(inttotal) {
this.total= total;
}
publicListgetData() {
returndata;
}
public voidsetData(List data) {
this.data= data;
}
public static classDataBean {
/**
* articleType : n
* count : 29
* downs : 0
* firstImg : http://img.pcauto.com.cn/images/pcautogallery/modle/article/20169/8/14733163729178590_600.jpg
* id : 8562073
* image : http://img0.pcauto.com.cn/pcauto/1609/08/g_8562073_1473339813478_240x160.jpg
* mtime : 1473351348000
* pubDate : 2016-09-09
* title : 新福特翼虎購(gòu)車(chē)手冊(cè) 家用中配足夠?qū)嵱?/p>
* ups : 26
* url : http://www.pcauto.com.cn/teach/856/8562073.html
*/
privateStringarticleType;
private intcount;
private intdowns;
privateStringfirstImg;
privateStringid;
privateStringimage;
private longmtime;
privateStringpubDate;
privateStringtitle;
private intups;
privateStringurl;
publicStringgetArticleType() {
returnarticleType;
}
public voidsetArticleType(String articleType) {
this.articleType= articleType;
}
public intgetCount() {
returncount;
}
public voidsetCount(intcount) {
this.count= count;
}
public intgetDowns() {
returndowns;
}
public voidsetDowns(intdowns) {
this.downs= downs;
}
publicStringgetFirstImg() {
returnfirstImg;
}
public voidsetFirstImg(String firstImg) {
this.firstImg= firstImg;
}
publicStringgetId() {
returnid;
}
public voidsetId(String id) {
this.id= id;
}
publicStringgetImage() {
returnimage;
}
public voidsetImage(String image) {
this.image= image;
}
public longgetMtime() {
returnmtime;
}
public voidsetMtime(longmtime) {
this.mtime= mtime;
}
publicStringgetPubDate() {
returnpubDate;
}
public voidsetPubDate(String pubDate) {
this.pubDate= pubDate;
}
publicStringgetTitle() {
returntitle;
}
public voidsetTitle(String title) {
this.title= title;
}
public intgetUps() {
returnups;
}
public voidsetUps(intups) {
this.ups= ups;
}
publicStringgetUrl() {
returnurl;
}
public voidsetUrl(String url) {
this.url= url;
}
}
}