{ "statusCode":"000000", "desc":"请求成功", "result":{ "petFamilyList":[ { "petID":77, "name":"腊肠犬", "engName":"Dachshund", "price":"2000起", "coverURL":"http://img.boqiicdn.com/Data/BK/P/img22101406708896.jpg" } ], "totalCount":1 } }
获取狗狗列表我们修改MainActivity.java里面的sendRequest()方法,将url换成获取狗狗列表的APIString url = "https://api.apishop.net/common/dogFamily/queryDogList?apiKey=您的API KEY";
”您的API KEY“替换成您自己的apishop里面的API KEY改写OKHttp的回调方法onResponse,解析狗狗列表数据,我们可以对照接口返回的示例进行解析通过成员变量mPetFamilyList来接收我们最终要获取的狗狗列表数据通知RecyclerView刷新列表狗狗列表数据获取完成之后,需要刷新RecylerView的列表首先我们把RecyclerView变成一个成员变量,这样就可以在onResponse方法中获取到RecyclerView对象由于onResponse是在OkHttp创建的子线程,我们要通知界面进行刷新的话,需要切换到主线程执行,这里需要用到runOnUiThread方法,调用之后,会在主线程执行run方法,通知RecyclerView的Adapter数据发生变化,需要重新绑定视图构建狗狗列表条目视图之前我们是通过new控件对象的方式,创建RecyclerView列表条目的视图,但当条目视图比较复杂时,一般使用布局文件的方式构建视图在app模块中的res/layout目录中创建条目布局文件dog_list_item.xml,使用布局LienarLayout来排列狗狗图片对应的ImageView和狗狗名字对应的TextView适配器绑定狗狗列表视图在onCreatViewHolder方法中通过LayoutInflater将布局文件dog_list_item.xml转化成条目视图item,并且将item让MyViewHolder持有onBindViewHolder方法中,将条目视图与狗狗列表数据进行绑定,设置狗狗标题和加载狗狗图片getItemCount返回列表条目的个数,即狗狗列表数据的个数狗狗网络图片的加载狗狗图片是一个网络图片,需要使用网络图片库来进行加载这里我们使用Android开发中比较流行的开源图片加载库Glide进行加载Glide项目地址:https://github.com/bumptech/glide添加对Glide的依赖在app模块下的build.gradle中添加对Glide的依赖:添加完成后,点击右上角的Sync Now下载Glide相关库加载狗狗网络图片调用Glide提供的API加载狗狗的网络图片Glide.with(MainActivity.this).load(coverUrl).into(imageView);
由于返回的狗狗图片的URL是http协议,但是Android 9以后强制使用https协议,所以图片可能加载不出来,可以通过配置AndroidManifest.xml中application标签的usesCleartextTraffic来跳过https强制限制(图片来源网络,侵删)
0 评论