Если вы посмотрите на код под ENERC_KCAL, FAT, FASAT, FAMS, все они имеют одинаковые 3 параметра: label , amount и unit . Я хочу установить значение метки и количества в моем RecyclerAdapter, чтобы заполнить recylerView.

"totalNutrients":{
   "ENERC_KCAL":{
      "label":"Energy",
      "quantity":2493.0949190757847,
      "unit":"kcal"
   },
   "FAT":{
      "label":"Fat",
      "quantity":2.275,
      "unit":"g"
   },
   "FASAT":{
      "label":"Saturated",
      "quantity":0.0665,
      "unit":"g"
   },
   "FAMS":{
      "label":"Monounsaturated",
      "quantity":0.224,
      "unit":"g"
   }
}

Однако в моем классе данных создаются отдельные объекты типа ENERC_KCAL, FAT, FASAT, FAMS (я использую подключаемый модуль класса Json to Kotlin) в следующем формате



                    data class ENERCKCAL(
                    @SerializedName("label")
                    val label: String?,
                    @SerializedName("quantity")
                    val quantity: Double?,
                    @SerializedName("unit")
                    val unit: String?
                )

                data class FAT(
                    @SerializedName("label")
                    val label: String?,
                    @SerializedName("quantity")
                    val quantity: Double?,
                    @SerializedName("unit")
                    val unit: String?
                )

                data class FASAT(
                    @SerializedName("label")
                    val label: String?,
                    @SerializedName("quantity")
                    val quantity: Double?,
                    @SerializedName("unit")
                    val unit: String?
                )

Есть ли способ сгенерировать GenericClass для доступа к метке и значению количества или как мне получить доступ к значениям в существующей структуре?

2
Narendra_Nath 2 Май 2021 в 19:00

1 ответ

Лучший ответ

Если вы хотите отображать свои данные в recyclerview, попробуйте следующее:

  data class TotalNutrients(@SerializedName("ENERC_KCAL")val enerc:Nutrient, @SerializedName("FAT")val fat:Nutrient, @SerializedName("FASAT")val fasat:Nutrient, @SerializedName("FAMS")val fams:Nutrient) {

        data class Nutrient(@SerializedName("label")
                            val label: String?,
                            @SerializedName("quantity")
                            val quantity: Double?,
                            @SerializedName("unit")
                            val unit: String?
        )
        
        fun getArrayList():ArrayList<Nutrient>{
            return arrayListOf(enerc,fat,fasat,fams)
        }

    }

Теперь вы можете использовать getArrayList () для заполнения recyclerview

1
Pavel B. 2 Май 2021 в 16:20