Ответ 1
[обновление] Библиотека немного изменилась, подробнее здесь: https://github.com/rharter/auto-value-gson
Я смог заставить его работать так. Надеюсь, это поможет вам.
-
Импорт в файл приложения gradle
apt 'com.ryanharter.auto.value:auto-value-gson:0.3.1'
-
Создать объект с autovalue:
@AutoValue public abstract class SignIn { @SerializedName("signin_token") public abstract String signinToken(); @SerializedName("user") public abstract Profile profile(); public static TypeAdapter<SignIn> typeAdapter(Gson gson) { return new AutoValue_SignIn.GsonTypeAdapter(gson); } }
-
Создайте свой типовой адаптер Factory (Пропустите, если используете версию > 0.3.0)
public class AutoValueGsonTypeAdapterFactory implements TypeAdapterFactory { public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) { Class<? super T> rawType = type.getRawType(); if (rawType.equals(SignIn.class)) { return (TypeAdapter<T>) SignIn.typeAdapter(gson); } return null; } }
-
Создайте свой конвертер Gson с помощью вашего GsonBuilder
GsonConverterFactory gsonConverterFactory = GsonConverterFactory.create( new GsonBuilder() .registerTypeAdapterFactory(new AutoValueGsonTypeAdapterFactory()) .create());
-
Добавьте его в свой модифицированный строитель
Retrofit retrofit = new Retrofit .Builder() .addConverterFactory(gsonConverterFactory) .baseUrl("http://url.com/") .build()
-
Сделайте свой запрос
- Enjoy
Бонусный живой шаблон:
В вашем классе autovalue введите avtypeadapter, затем автозаполнение, чтобы сгенерировать код адаптера типа. Для работы вам нужно добавить это как живой шаблон в Android Studio.
public static TypeAdapter<$class$> typeAdapter(Gson gson) {
return new AutoValue_$class$.GsonTypeAdapter(gson);
}
Как создать и использовать живой шаблон.