当前位置: 首页 > news >正文

Retrofit+Hilt后端请求小项目1--项目介绍

简介

本项目根据 youtube 对应教程实现而来

将会对对应代码以及依赖(如 Hilt、retrofit、coil)进行详细的分析与解读,同时缕清项目结构安排

如文章有叙述不清晰的,请直接查看原教程:https://www.youtube.com/watch?v=bLIWWOMVxts


使用技术

Retrofit 基于 OkHttp 的网络请求库
Coil 图像处理库
Hilt 依赖注入库

Moshi 基于 retrofit 的对象类型转换库


项目结构

项目完整结构图:

com└─example│  CharacterApplication.kt│└─character│  MainActivity.kt│├─data│  ├─api│  │  │  ApiConstants.kt│  │  │  CharacterApi.kt│  │  ││  │  └─model│  │          Character.kt│  │          Wand.kt│  ││  └─repository│          CharacterRepo.kt│├─di│      CharacterApiModule.kt│└─ui├─home│      Home.kt│      HomeViewModel.kt│└─themeColor.ktShape.ktTheme.ktType.kt

在这里插入图片描述


完整代码调整

作者提供的 github 项目:https://github.com/Hoodlab/retrofit-mvvm-

请注意!由于接口地址变更,而作者目前没有对仓库进行更新,我们在导入项目后需要执行以下修改操作:


找到 ApiConstants.kt,修改 BASE_URL 的值为最新接口地址

object ApiConstants {const val BASE_URL = "https://hp-api.onrender.com/api/"const val END_POINTS = "characters"
}

找到 module/Wand.kt ,删除 length 一项

找到 module/Character.kt ,删除 dateOfBirth、yearOfBirth 两项

此时两个文件内容如下(可以直接复制粘贴):

// Wand.kt
@JsonClass(generateAdapter = true)
data class Wand(@Json(name = "core")val core: String,@Json(name = "wood")val wood: String
)// Character.kt
@JsonClass(generateAdapter = true)
data class Character(@Json(name = "actor")val actor: String,@Json(name = "alive")val alive: Boolean,@Json(name = "alternate_actors")val alternateActors: List<String>,@Json(name = "alternate_names")val alternateNames: List<String>,@Json(name = "ancestry")val ancestry: String,@Json(name = "eyeColour")val eyeColour: String,@Json(name = "gender")val gender: String,@Json(name = "hairColour")val hairColour: String,@Json(name = "hogwartsStaff")val hogwartsStaff: Boolean,@Json(name = "hogwartsStudent")val hogwartsStudent: Boolean,@Json(name = "house")val house: String,@Json(name = "id")val id: String,@Json(name = "image")val image: String,@Json(name = "name")val name: String,@Json(name = "patronus")val patronus: String,@Json(name = "species")val species: String,@Json(name = "wand")val wand: Wand,@Json(name = "wizard")val wizard: Boolean,
)

此时就可以直接构建了(不需要搭梯子即可访问后端接口)

相关文章:

Retrofit+Hilt后端请求小项目1--项目介绍

简介 本项目根据 youtube 对应教程实现而来 将会对对应代码以及依赖&#xff08;如 Hilt、retrofit、coil&#xff09;进行详细的分析与解读&#xff0c;同时缕清项目结构安排 如文章有叙述不清晰的&#xff0c;请直接查看原教程&#xff1a;https://www.youtube.com/watch?…...

实际项目角度优化App性能

前言&#xff1a;前年替公司实现了一个在线检疫App&#xff0c;接下来一年时不时收到该App的需求功能迭代&#xff0c;部分线下问题跟进。随着新冠疫情防控政策放开&#xff0c;该项目也是下线了。 从技术角度来看&#xff0c;有自己的独特技术处理特点。下面我想记录一下该App…...

Structure|Alphafold2在肽结构预测任务上的基准实验

​题目&#xff1a;Benchmarking AlphaFold2 on peptide structureprediction 文献来源&#xff1a;2023, Structure 31, 1–9 代码&#xff1a;基准实验&#xff0c;比较了比较多的模型 1.背景介绍 由2-50个氨基酸构成的聚合物可以称为肽。但是关于肽和蛋白质之间的差异还是…...

Simple XML

简介 官网&#xff1a;https://simple.sourceforge.net/home.php Github&#xff1a;https://github.com/ngallagher/simplexml Simple 是用于 Java 的高性能 XML 序列化和配置框架。它的目标是提供一个 XML 框架&#xff0c;使 XML 配置和通信系统的快速开发成为可能。该框架…...

在代码质量和工作效率的矛盾间如何取舍?

这个问题的答案是&#xff0c;在很短的一段时期&#xff0c;编写高质量代码似乎会拖慢我们的进度。与按照头脑中首先闪现的念头编写代码相比&#xff0c;高质量的代码需要更多的思考和努力。但如果我们编写的不仅仅是运行一次就抛之脑后的小程序&#xff0c;而是更有实质性的软…...

rabbitMq安装(小短文)--未完成

rabbitMq是在activeMq的基础上创造的&#xff0c;有前者的功能&#xff0c;比前者强&#xff0c;属于后来居上。系统环境:windows10首先下载相关软件Erlang&#xff0c;因为他是这个语言写的。https://www.erlang.org/downloads然后安装&#xff0c;并且弄到环境变量里验证是否…...

Python调用MMDetection实现AI抠图去背景

这篇文章的内容是以 《使用MMDetection进行目标检测、实例和全景分割》 为基础&#xff0c;需要安装好 MMDetection 的运行环境&#xff0c;同时完成目标检测、实例分割和全景分割的功能实践&#xff0c;之后再看下面的内容。 想要实现AI抠图去背景的需求&#xff0c;我们需要…...

Java代码使用最小二乘法实现线性回归预测

最小二乘法简介最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用的数学工具。它通过最小化误差&#xff08;真实目标对象与拟合目标对象的差&#xff09;的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数…...

linux-rockchip-音频相关

一、查看当前配置声卡状态 cat /proc/asound/cards二、查看当前声卡工作状态 声卡分两种通道&#xff0c;一种是Capture、一种是Playback。Capture是输入通道&#xff0c;Playback是输出通道。例如pcm0p属于声卡输出通道&#xff0c;pcm0c属于声卡输入通道。 ls /proc/asoun…...

Android Handler的内存抖动以及子线程创建Handler

一、介绍 Handler&#xff0c;作为一个在主线程存活的消息分发工具&#xff0c;在App开发过程使用频率很高&#xff0c;也是面试问的比较多的。 面试常见的比如&#xff1a;子线程如何创建&#xff1f;Handler的机制是什么&#xff1f;内存抖动等&#xff0c;接下来我们会针对H…...

机器学习算法原理之k近邻 / KNN

文章目录k近邻 / KNN主要思想模型要素距离度量分类决策规则kd树主要思想kd树的构建kd树的搜索总结归纳k近邻 / KNN 主要思想 假定给定一个训练数据集&#xff0c;其中实例标签已定&#xff0c;当输入新的实例时&#xff0c;可以根据其最近的 kkk 个训练实例的标签&#xff0c…...

【期末复习】例题说明Prim算法与Kruskal算法

点睛Prim与Kruskal算法是用来求图的最小生成树的算法。最小生成树有n个顶点&#xff0c;n-1条边&#xff0c;不能有回路。Prim算法Prim算法的特点是从个体到整体&#xff0c;随机选定一个顶点为起始点出发&#xff0c;然后找它的权值最小的边对应的另一个顶点&#xff0c;这两个…...

AtCoder Beginner Contest 290 A-E F只会n^2

ABC比较简单就不再复述 D - Marking 简要题意 &#xff1a;给你一个长度为nnn的数组,下标为0到n−10 到 n-10到n−1&#xff0c;最初指针位于0,重复执行n-1次操作&#xff0c;每次操作的定义为将当前指针加上ddd&#xff0c;如果该位置为空(未填数),否则我们向右找到第一个为空…...

springMvc源码解析

入口&#xff1a;找到springboot的自动配置&#xff0c;将DispatcherServlet和DispatcherServletRegistrationBean注入spring容器&#xff08;DispatcherServletRegistrationBean间接实现了ServletContextInitializer接口&#xff0c;最终ServletContextInitializer的onStartup…...

采用aar方式将react-native集成到已有安卓APP

关于react-native和android的开发环境搭建、环境变量配置等可以查看官方文档。 官方文档地址 文章中涉及的node、react等版本&#xff1a; node:v16.18.1 react:^18.1.0 react-native:^0.70.6 gradle:gradle-7.2开发工具&#xff1a;VSCode和android studio 关于react-native和…...

Tomcat目录介绍,结构目录有哪些?哪些常用?

bin 启动&#xff0c;关闭和其他脚本。这些 .sh文件&#xff08;对于Unix系统&#xff09;是这些.bat文件的功能副本&#xff08;对于Windows系统&#xff09;。由于Win32命令行缺少某些功能&#xff0c;因此此处包含一些其他文件。 比如说&#xff1a;windows下启动tomcat用的…...

Elasticsearch也能“分库分表“,rollover实现自动分索引

一、自动创建新索引的方法 MySQL的分库分表大家是非常熟悉的&#xff0c;在Elasticserach中有存在类似的场景需求。为了不让单个索引太过于庞大&#xff0c;从而引发性能变差等问题&#xff0c;我们常常有根据索引大小、时间等创建新索引的需求&#xff0c;解决方案一般有两个…...

6 大经典机器学习数据集,3w+ 用户票选得出,建议收藏

内容一览&#xff1a;本期汇总了超神经下载排名众多的 6 个数据集&#xff0c;涵盖图像识别、机器翻译、遥感影像等领域。这些数据集质量高、数据量大&#xff0c;经历人气认证值得收藏码住。 关键词&#xff1a;数据集 机器翻译 机器视觉 数据集是机器学习模型训练的基础&…...

Logview下载

Logview下载 之前一直用的NotePad 后来偶尔的看到作者有发布不当言论 就卸载了又去下载了NotePad– 但是&#xff0c;其实不管是 还是 – 打开大一些的文件都会卡死 所以就搜了这个logview 用起来还不错&#xff0c;目前我这再大的文件 这个软件都是秒打开 但是也会有一点点小…...

macos 下载 macOS 系统安装程序及安装U盘制作方法

01 下载 macOS 系统安装程序的方法 本文来自: https://discussionschinese.apple.com/docs/DOC-250004259 简介 Mac 用户时不时会需要下载 macOS 的安装程序&#xff0c;目的不同&#xff0c;或者升级或者降级&#xff0c;或者研究或者收藏。为了方便不同用户&#xff0c;除…...

OpenClaw模型微调:为Qwen2.5-VL-7B注入专业领域识别能力

OpenClaw模型微调&#xff1a;为Qwen2.5-VL-7B注入专业领域识别能力 1. 为什么需要专业领域微调&#xff1f; 去年我在尝试用OpenClaw构建一个医疗影像辅助分析工具时&#xff0c;发现现成的多模态模型在描述X光片时总会出现一些令人啼笑皆非的错误。比如把正常的肺部纹理识别…...

Go的runtime.LockOSThread:将goroutine绑定到系统线程

Go语言以其轻量级的goroutine和高效的并发模型著称&#xff0c;但在某些特殊场景下&#xff0c;开发者需要更精细地控制goroutine与系统线程的绑定关系。这时&#xff0c;runtime.LockOSThread便成为了一个关键工具。本文将深入探讨这一机制&#xff0c;帮助读者理解其原理、应…...

基于S7-200控制的全方位自动洗车系统设计与实现:包含设计手册、PLC程序、仿真与实际接线全图解

基于S7-200控制的自动洗车系统设计 本设计包括设计说明书&#xff0c;PLC程序&#xff0c;组态仿真&#xff0c;I/O接口&#xff0c;带注释程序pdf版&#xff0c;接线图&#xff0c;控制电路图&#xff0c;主电路图&#xff0c;PLC接线图&#xff0c;顺序功能图。 总体设计系统…...

Chord在科研视频处理中的应用:实验过程帧级语义标注与行为时序建模

Chord在科研视频处理中的应用&#xff1a;实验过程帧级语义标注与行为时序建模 1. 引言&#xff1a;科研视频分析的挑战与机遇 在科学研究领域&#xff0c;特别是生物学、心理学、医学和工程学等学科中&#xff0c;实验过程视频记录已成为不可或缺的研究手段。研究人员通过视…...

SEO_如何通过内容优化有效提升SEO效果?(403 )

如何通过内容优化有效提升SEO效果&#xff1f; 在当今竞争激烈的网络环境中&#xff0c;如何通过内容优化有效提升SEO效果&#xff0c;成为了每一个网站运营者的关键问题。搜索引擎优化&#xff08;SEO&#xff09;是一门艺术&#xff0c;需要我们在内容策略和技术手段上不断探…...

嵌入式调试技巧:使用串口、J-Link 定位 Bug 效率翻倍

在嵌入式软件开发领域&#xff0c;有一句广为流传的话&#xff1a;“写代码只占20%的时间&#xff0c;调试占了80%。”虽然这个比例因人而异&#xff0c;但调试确实是整个开发流程中最不可预测、最消耗精力的环节。当一个程序在硬件上“跑飞”了&#xff0c;或者某个外设莫名其…...

Aruba Instant AP不止是家用:小公司无线组网与多SSID隔离实战配置指南

Aruba Instant AP不止是家用&#xff1a;小公司无线组网与多SSID隔离实战配置指南 当五人的设计工作室频繁遭遇视频会议卡顿&#xff0c;当咖啡店的顾客Wi-Fi挤占收银系统带宽&#xff0c;这些看似琐碎的痛点背后&#xff0c;都指向同一个问题&#xff1a;传统家用路由器根本无…...

避坑指南:CentOS7升级内核开启BBR加速最常见的5个错误及解决方法

CentOS7内核升级与BBR加速避坑实战手册 每次在CentOS 7服务器上折腾内核升级和BBR加速时&#xff0c;总会遇到各种"惊喜"。记得第一次操作时&#xff0c;我盯着黑屏的服务器足足半小时&#xff0c;心跳快得像是刚跑完马拉松。本文将分享那些只有踩过坑才知道的实战经…...

Pixel Language Portal详细步骤:从GitHub源码构建到自定义16-bit图标替换

Pixel Language Portal详细步骤&#xff1a;从GitHub源码构建到自定义16-bit图标替换 1. 项目介绍与准备工作 Pixel Language Portal&#xff08;像素语言跨维传送门&#xff09;是一款基于Tencent Hunyuan-MT-7B翻译引擎构建的创新型翻译工具。它将传统翻译功能与16-bit像素…...

Harness Engineering入门基础教程(非常详细),从人类写码到Agent开发,看这篇就够了!

读完 OpenAI 关于 Harness Engineering 的文章后&#xff0c;我做了一份核心总结&#xff0c;并结合自己的项目写下了这些启发。 最近在团队里&#xff0c;我尝试借鉴 OpenAI 提出的 Harness Engineer 概念&#xff0c;探索一种新的开发模式。它的核心问题是&#xff1a;如果人…...