JSON Array Retrofit 并将其显示在 recyclerview Android Java 上

Posted

技术标签:

【中文标题】JSON Array Retrofit 并将其显示在 recyclerview Android Java 上【英文标题】:JSON Array Retrofit and display it on a recyclerview Android Java 【发布时间】:2021-04-01 00:14:39 【问题描述】:

我正在尝试实现@GET 请求,但我得到一个空响应。我熟悉使用以下内容实现响应正文

"billers": [
    
        "name": "Biller full name",
        "slug": "biller-short-name",
        "fields": 
            "FieldName": 
                "type": "can be textfield, date, selectable or hidden",
                "required": true,
                "placeholder": "This is a field",
                "defaultValue": "value1"
                "regex": "only appears if the type is textfield e.g. ^[-a-zA-Z .]1,100$",
                "dateFormat": "only appears if type is date e.g. yyyy-MM-dd",
                "values": [
                    "value1": "only appears if type is selectable",
                    "value2": "value 2"
                ]
            
        
]

但这是我第一次实现这样的响应

[

    "name": "Category full name",
    "slug": "category-short-name",
    "iconUrl": 
      "android": 
        "xhdpi": "xhdpi category icon url",
        "mdpi": "mdpi category icon url",
        "hdpi": "hdpi category icon url"
      ,
      "ios": 
        "3x": "3x biller icon url",
        "retina": "retina biller icon url",
        "nonRetina": "non-retina icon image url"
      
    
  
]

这是我的课程

这是我的错误,调用 api 时收到 200,但是当我尝试在 recyclerview 上显示它时,它说响应为空

【问题讨论】:

您是否尝试过记录您在响应中收到的内容? 附上代码而不是屏幕截图 【参考方案1】:

您没有展示如何将响应转换为您的模型。从第二个回复可以看出你的回复是PayBillsCategoryModel的列表

以 Gson 为例,你有这样的东西:

data class PayBillsCategoryModel(
    @SerializedName("name ") val name: String? = null,
    @SerializedName("name ") val slug: String? = null,
    @SerializedName("name ") val iconUrl: IconUrl? = null
)


data class IconUrl(
    @SerializedName("android") val android: Android? = null,
    @SerializedName("ios") val ios: Ios? = null
)

data class Android(
    @SerializedName("xhdpi") val xhdpi: String? = null,
    @SerializedName("mdpi") val mdpi: String? = null,
    @SerializedName("hdpi") val hdpi: String? = null,
)

data class Ios(
    @SerializedName("3x") val x3: String? = null,
    @SerializedName("retina") val retina: String? = null,
    @SerializedName("nonRetina") val nonRetina: String? = null
)

所以在 api 调用之后你的响应是

 data class Response(val payBillsList: ArrayList<PayBillsCategoryModel>)

您需要将此列表传递给您的适配器

adapter.setData(payBillList)

【讨论】:

以上是关于JSON Array Retrofit 并将其显示在 recyclerview Android Java 上的主要内容,如果未能解决你的问题,请参考以下文章

通过 URL 从 JSON 数据中获取数据并使用列表视图或回收器视图将其显示在 android 应用程序中

预期 BEGIN_OBJECT 但在路径 $ 处是 BEGIN_ARRAY - 使用 RxJava 处理 JSONArray 响应的 Retrofit2

如何使用 Retrofit 查询某些 JSON 项目?

我得到了预期的BEGIN_ARRAY,但是在使用Android中的Retrofit(java)尝试获取json时,在第1行第2列路径$中是BEGIN_OBJECT

无法通过 @POST 请求使用 Retrofit 解析 JSON 响应和参数

使用 json 数据并将其显示在列中