0

我在 Android 中实现自定义类型的步骤

  1. 我在应用程序的 gradle 文件中添加了 customTypeMapping。

  2. 还创建了一个 customtype 适配器。

问题

接下来我试图将它添加到我必须传递 customtype 和适配器的 apollo 客户端,但问题是我没有得到任何我正在生成的自定义类型。Apollo 只有 ID、Numeric、Date 等,但我映射的自定义类型不是由 apollo 客户端生成的。

我正在使用官方文档https://github.com/apollographql/apollo-android#custom-scalar-types来实现它

4

2 回答 2

0

在您的应用程序 build.gradle 中添加:


android {
   ...

    apollo {
        customTypeMapping = [ "customtype":"java.lang.String"] //or the appropriate type mapping
    }
}

在您构建 apollo 客户端的位置:

        val apolloClient = ApolloClient.builder()
            .addCustomTypeAdapter(CustomType.YOUTTYPE, customAdapter)
            .serverUrl(BASE_URL)
            .okHttpClient(okHttpClient)
            .build()



    private var customAdapter: CustomTypeAdapter<String> = object : CustomTypeAdapter<String> {
        override fun decode(@NotNull value: CustomTypeValue<*>): String = value.value.toString()

        @NotNull
        override fun encode(@NotNull value: String): CustomTypeValue<*> =
            CustomTypeValue.GraphQLString(value)
            //appropriate type mapping
    }
于 2019-11-25T09:47:12.327 回答
0

来自https://github.com/apollographql/apollo-android/issues/1702

除了在 gradle 文件中指定 customTypeMapping 之外,您还需要为传递给 addCustomTypeAdapter() 的适配器编写代码。有关java.util.Date 的适配器示例,请参阅https://github.com/apollographql/apollo-android#custom-scalar-types

Apollo 无法生成自定义类型,因为根据定义,这是您控制的类型。

PS:请不要在堆栈溢出+ github上交叉发布,因为它重复了回复和分散信息的努力。

于 2019-10-23T12:40:24.293 回答