使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成
玩Android 开放API-玩Android - wanandroid.com
接口使用的是下面的两个:
https://www.wanandroid.com/banner/jsonhttps://www.wanandroid.com/banner/json
wanandroid.com/project/list/1/json?cid=294https://www.wanandroid.com/project/list/1/json?cid=294
需求列表:
现在我需要使用kotlin 来完成下面的需求,使用mvvm的模式,要求使用databinding,viewmodel,livedata,fresco,room,retrofit来完成
1:主页显示https://www.wanandroid.com/banner/json 的数据
使用recyclerView 来展示每一个banner,其中banner内部使用databinding
使用fresco 来加载对应的图片
使用retrofit 来下载数据,下载后要求数据保存在room里面,如果数据在数据库中没有,那么就添加,如果已经有了就更新当前的数据,primarykey 是id
使用viewmode
有一个按钮“刷新banner” 会再次拉取https://www.wanandroid.com/banner/json 来刷新,使用databinding来刷新
2:主页还要显示https://www.wanandroid.com/project/list/1/json?cid=294的数据
使用recyclerView 来展示每一个project,其中project内部使用databinding
使用fresco 来加载对应的图片
使用retrofit 来下载数据,下载后要求数据保存在room里面,如果数据在数据库中没有,那么就添加,如果已经有了就更新当前的数据,primarykey 是id
使用viewmode
有一个按钮“刷新banner” 会再次拉取 https://www.wanandroid.com/project/list/1/json?cid=294 来刷新,使用databinding来刷新
1:https://www.wanandroid.com/banner/json
数据格式如下:
{
"data": [
{
"desc": "我们支持订阅啦~",
"id": 30,
"imagePath": "https://www.wanandroid.com/blogimgs/42da12d8-de56-4439-b40c-eab66c227a4b.png",
"isVisible": 1,
"order": 2,
"title": "我们支持订阅啦~",
"type": 0,
"url": "https://www.wanandroid.com/blog/show/3352"
}
],
"errorCode": 0,
"errorMsg": ""
}
2:https://www.wanandroid.com/project/list/1/json?cid=294
数据格式如下:
{
"data": {
"curPage": 1,
"datas": [
{
"adminAdd": false,
"apkLink": "",
"audit": 1,
"author": "qianyue0317",
"canEdit": false,
"chapterId": 294,
"chapterName": "完整项目",
"collect": false,
"courseId": 13,
"desc": "玩Android flutter版本",
"descMd": "",
"envelopePic": "https://www.wanandroid.com/blogimgs/89868c9a-e793-46f3-a239-751246951b7f.png",
"fresh": false,
"host": "",
"id": 27961,
"isAdminAdd": false,
"link": "https://www.wanandroid.com/blog/show/3618",
"niceDate": "2024-01-29 22:10",
"niceShareDate": "2024-01-29 22:10",
"origin": "",
"prefix": "",
"projectLink": "https://github.com/qianyue0317/wan_android_flutter",
"publishTime": 1706537457000,
"realSuperChapterId": 293,
"selfVisible": 0,
"shareDate": 1706537457000,
"shareUser": "",
"superChapterId": 294,
"superChapterName": "开源项目主Tab",
"tags": [
{
"name": "项目",
"url": "/project/list/1?cid=294"
}
],
"title": "玩Android-flutter项目",
"type": 0,
"userId": -1,
"visible": 1,
"zan": 0
}
],
"offset": 0,
"over": false,
"pageCount": 20,
"size": 15,
"total": 289
},
"errorCode": 0,
"errorMsg": ""
}
0:在应用模块的 build.gradle
文件中,确保启用了数据绑定:
android {
//...
buildFeatures {
dataBinding = true
}
}
1. 依赖项配置
在项目的 build.gradle
文件中添加以下依赖项:
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
android {
namespace = "com.example.mykotlin"
compileSdk =