我在 Android 中实现自定义类型的步骤
我在应用程序的 gradle 文件中添加了 customTypeMapping。
还创建了一个 customtype 适配器。
问题
接下来我试图将它添加到我必须传递 customtype 和适配器的 apollo 客户端,但问题是我没有得到任何我正在生成的自定义类型。Apollo 只有 ID、Numeric、Date 等,但我映射的自定义类型不是由 apollo 客户端生成的。
我在应用程序的 gradle 文件中添加了 customTypeMapping。
还创建了一个 customtype 适配器。
接下来我试图将它添加到我必须传递 customtype 和适配器的 apollo 客户端,但问题是我没有得到任何我正在生成的自定义类型。Apollo 只有 ID、Numeric、Date 等,但我映射的自定义类型不是由 apollo 客户端生成的。
在您的应用程序 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
}
来自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上交叉发布,因为它重复了回复和分散信息的努力。