I'm getting the next trouble declaring my models on android
I have this api response:
{
"isWeekTopic": false,
"_id": "62d739f65a4f2db1b81b5192",
"topicNumber": "1",
"title": "NĂºmeros naturales",
"thumbnail": "https://www.example.com",
"relatedSkillsId": [
"62c12752d9de3e63d7cd0a78"
],
"relatedSubSkillsId": [
"62d73a8c5a4f2db1b81b5194"
],
"createdAt": "2018-01-01T00:00:00.000Z",
"updatedAt": "2018-01-01T00:00:00.000Z",
"testing": {
"mainColor": "#f2f2f2",
"secondColor": "#f2f2f2",
"image": "https://www.example.com"
},
"assetsStreak": {
"VIDEO": 2,
"STORY": 0,
"VIDEOGAME": 2,
"INFOGRAPHIC": 2,
"EXPLANATION": 0,
"STEPBYSTEP": 2
},
"skillPercent": 60
}
and this is my remote response model:
data class TopicsItemRemoteResponseModel(
@field:SerializedName("_id")
val topicsId: String = "",
@field:SerializedName("title")
val title: String = "",
@field:SerializedName("skillNumber")
val skillNumber: Int = 0,
@field:SerializedName("skillPercent")
val skillPercent: Int = 0,
@field:SerializedName("thumbnail")
val thumbnail: String = "",
@field:SerializedName("createdAt")
val createdAt: String = "",
@field:SerializedName("updatedAt")
val updatedAt: String = "",
@field:SerializedName("isWeekTopic")
val isWeekTopic: Boolean = false,
@field:SerializedName("relatedSkillsId")
val relatedSkillsId: List<String> = listOf(),
@field:SerializedName("relatedSubSkillsId")
val relatedSubSkillsId: List<String> = listOf(),
) : Parcelable {
companion object {
fun mapListFromRemoteToDomainModel(
remoteList: List<TopicsItemRemoteResponseModel>): List<TopicsItemResponseModel> {
val topics = mutableListOf<TopicsItemResponseModel>()
remoteList.forEach { topicsRemoteResponseItem ->
topics.add(
mapFromRemoteToDomainModel(topicsRemoteResponseItem)
)
}
return topics
}
private fun mapFromRemoteToDomainModel(
topicsRemoteResponseItem: TopicsItemRemoteResponseModel
): TopicsItemResponseModel = with(topicsRemoteResponseItem) {
return TopicsItemResponseModel(
topicsId = topicsId,
skillNumber = skillNumber,
title = title,
skillPercent = skillPercent,
thumbnail = thumbnail,
createdAt = createdAt,
updatedAt = updatedAt,
isWeekTopic = isWeekTopic,
relatedSkillsId = relatedSkillsId,
relatedSubSkillsId = relatedSubSkillsId,
)
}
}
}
my problem is that I don't know how to access to assetsStreak info or testing info, I don't know how to declare them o what to do. I tied doing something like putting declaring it this way
@field:SerializedName("assetsStreak") val assetsStreak: assetsStreak,
but android studio tellsme its an error: unresolved reference: assetsStreak
I'm trying to learn kotlin, but there is no info about this case that I could find, please I'm desperate thanks for you time
so after declared the class AssetStreak it doesn't mark error anymore but the problem goes to the response model which I made it this way
@Parcelize
data class TopicsItemResponseModel(
val topicsId: String = "",
val title: String = "",
val skillNumber: Int = 0,
val thumbnail: String ="",
val createdAt: String = "",
val updatedAt: String = "",
val relatedSubSkillsId: List<String> = listOf(),
val relatedSkillsId: List<String> = listOf(),
val skillPercent: Int = 10,
val isWeekTopic: Boolean = false,
val assetsStreak: assetsStreak,
) : Parcelable {}
this way the error says unresolved reference asstsStreak and give me the option to create a class
if I put val assetsStreak: AssetsStreak, this way the error says unresolved reference AssetsStreakand give me the option to add dependency on another module should i do that?