Android MVVM demo(使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成)

使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成

玩Android 开放API-玩Android - wanandroid.com

接口使用的是下面的两个:

https://www.wanandroid.com/banner/jsonicon-default.png?t=O83Ahttps://www.wanandroid.com/banner/json

wanandroid.com/project/list/1/json?cid=294icon-default.png?t=O83Ahttps://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 =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值