Android 在LiveData可观察对象中使用@IntDef

Android 在LiveData可观察对象中使用@IntDef,android,android-livedata,Android,Android Livedata,我正在研究如何更新一些现有代码以使用新的Android LiveData架构模式。希望代码示例是不言自明的,我正在努力让@IntDef/@接口处理实时数据。我很乐意在ViewModel上为setAnsweredCorrect、SetCheated等创建方法,或者创建一个可变的LiveData属性并在代码中进行设置,只是我很难看到如何使用普通整数以外的任何东西,这会失去类型安全性 public class QuestionViewModel extends ViewModel { pub

我正在研究如何更新一些现有代码以使用新的Android LiveData架构模式。希望代码示例是不言自明的,我正在努力让@IntDef/@接口处理实时数据。我很乐意在ViewModel上为setAnsweredCorrect、SetCheated等创建方法,或者创建一个可变的LiveData属性并在代码中进行设置,只是我很难看到如何使用普通整数以外的任何东西,这会失去类型安全性

public class QuestionViewModel extends ViewModel {

    public static final int UNANSWERED = 0;
    public static final int ANSWERED_CORRECTLY = 1;
    public static final int ANSWERED_INCORRECTLY = 2;
    public static final int CHEATED = 3;

    @IntDef({UNANSWERED, ANSWERED_CORRECTLY, ANSWERED_INCORRECTLY, CHEATED})
    @Retention(RetentionPolicy.SOURCE)
    public @interface AnswerState{}

    private @AnswerState int answeredState;

    public Question()
    {
        this.setAnsweredState(UNANSWERED);
    }

    public @AnswerState int getAnsweredState() {
        return answeredState;
    }

    public void setAnsweredState(@AnswerState int answeredState) {
        this.answeredState = answeredState;
    }
试试这个:

ObservableField<AnswerState> observableAnswer = new ObservableField<>;
ObservableField observableAnswer=新的ObservableField;