У меня есть два файла JSON, которые связаны с использованием внешнего ключа / поля (в моем случае один - это Post (id, ...) и Comments (postId, ...)).Мне нужно отобразить общее количество комментариев на пост (в моем случае это всегда 5).
Мои классы данных выглядят следующим образом:
data class Posts(val userId: Int,
val id: Int,
val title: String,
val body: String)
data class Comments(val postId: Int,
val id: Int,
val name: String,
val email: String,
val body: String)
А вот функция, которую я использую дляполучить данные json (я использую okhttp для настройки клиента и gson для получения данных):
private fun fetchCommentJson() {
val postId = intent.getIntExtra(POST_ID, -1)
val commentJsonData = commentsJSON
val client = OkHttpClient()
val request = Request.Builder().url(commentJsonData).build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call?, e: IOException?) {
toast("Something went wrong fetching your data")
}
override fun onResponse(call: Call?, response: Response?) {
val body = response?.body()?.string()
val gson = GsonBuilder().create()
val commentsDetail = gson.fromJson(body, Array<Comments>::class.java)
val postDetail = gson.fromJson(body, Array<Posts>::class.java)
runOnUiThread {
for (commentSizeList in 0 until commentsDetail.size) {
val listOfComments = commentsDetail[commentSizeList] // List of all comments by Index
val post = postDetail[postId - 1].id // Post Id
// If postId is equal to original post id
if (listOfComments.postId == post) {
// Print it out
println(listOfComments)
}
}
}
}
})
}
Когда я распечатываю список, он действительно распечатывает все комментарии по каждому посту на основе егоID (так как сравнение сделано).Однако он печатает каждый комментарий отдельно (и настройка listOfComments.size выводит 1 для каждого комментария).
отображение списка всех комментариев на пост
У меня вопрос, какобъединить их все, чтобы отображалось общее количество комментариев на пост (в данном случае -> 5)?