androidapp开发入门 androidapp开发教程


androidapp开发入门  androidapp开发教程

文章插图
在上一篇文章中,我们完成了UI界面的编写
接下来我们就要把搜索的结果,显示在界面上 。
在Android开发中有很多种方式访问 *** ,本次视频将向大家介绍Retrofit,
Retrofit由Square 开发的,它构建在OkHttp之上 。它是一个流行的库,可以轻松地进行异步 *** 调用并将 *** ON数据处理为模型对象 。
在Android开发中有很多种方式访问 *** ,本次视频将向大家介绍Retrofit,Retrofit由Square 开发的,它构建在OkHttp之上 。它是一个流行的库,可以轻松地进行异步 *** 调用并将 *** ON数据处理为模型对象 。本次视频您将了解Retrofit库的简单实用,Moshi解析Json等知识 。
在使用Retrofit之前,我们需要先在项目中添加Retrofit库的依赖 。编辑app/build.gradle文件,在dependencies闭包中添加如下内容:
//retrofitimplementation "com.squareup.retrofit2:retrofit:2.9.0"//moshiimplementation("com.squareup.moshi:moshi-kotlin:1.12.0")//retrofit with moshiimplementation "com.squareup.retrofit2:converter-moshi:2.9.0"//coilimplementation("io.coil-kt:coil-compose:1.3.2")//kotlin coroutineimplementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3"implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3"//viewmodeldef lifecycle_version = "2.3.1"implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")retrofit库的依赖,主要负责 *** 请求,允许我们发送GET,POST请求
moshi库的依赖,moshi库将帮助我们将json数据转换为kotlin对象
converter-moshi库,增加了对retrofit使用moshi进行 *** ON解析的支持
coil库,允许我们使用url加载 *** 图片,我们可以使用少量的代码,完成图片的加载,coil库也是采用kotlin编写
kotlin coroutine,我们使用kotlin coroutine 的Flow处理网路的异步请求
ViewModel依赖,使用ViewModel使视图和数据能够分离开
完成之后我们重新编译一下项目
Postman是查看API接口返回结果非常优秀的程序,我们启动Postman 。
使用默认的GET *** ,输入下面的URL地址https://api.map.baidu.com/weather/v1/?district_id=110100&data_type=all&ak=m5ABoErD6VuCKdyGfqoEjflYvSmn1XqR,然后单击Send 。如下图:
androidapp开发入门  androidapp开发教程

文章插图
在搜索结果中,将输出类型设置为 *** ON 。您将看到格式良好的 *** ON显示:如下图:
androidapp开发入门  androidapp开发教程

文章插图
接下来,我们将创建天气信息的数据类
数据类的创建,我们借助Kotlin插件,将Json字符串快速转换为Kotlin数据类代码
在model包下右键;如下图:
androidapp开发入门  androidapp开发教程

文章插图

androidapp开发入门  androidapp开发教程

文章插图
点击 Advanced,这个支持(几乎)各种 *** ON库注释(Gson、Jackson、Fastjson、MoShi和LoganSquare)这个我们选择MoShi
点击生成,如下图:
androidapp开发入门  androidapp开发教程

文章插图
这样我们的数据类型就很方便的创建了 。如下图:
androidapp开发入门  androidapp开发教程

文章插图
接下来,编写我们的 *** 服务
object WeatherApiClient {private val BASE_URL = "https://api.map.baidu.com"private val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()private val retrofit: Retrofit by lazy {Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(MoshiConverterFactory.create(moshi)).build()}val weatherApiService: WeatherApiService by lazy {retrofit.create(WeatherApiService::class.java)}}interface WeatherApiService{@GET("/weather/v1/")suspend fun getWeatherData(@Query("district_id") district_id: String,@Query("data_type") data_type: String,@Query("ak") ak: String) : WeatherModel}在上面的代码中,我们创建一个私有的BASE_URL变量,我们需要为moshi构造器创建一个变量,添加KotlinJson的适配器工厂 (KotlinJsonAdapterFactory),创建Retrofit,这里使用by lazy 关键字创建Retrofit实例,这样仅在需要时进行初始化,传入BASE_URL,添加MoshiConverterFactory转换器工厂,然后构建.接下来,创建一个接口,获取api接口数据,这里我们创建一个函数,设置了查询参数,调用这个 *** 就会返回查询的数据 。接下来,创建api接口的实例 这里也是使用by lazy关键字创建延迟加载的实例,通过创建好的Retrofit来创建api接口服务 。

推荐阅读