Данные Android Live

У меня есть такой параметр, как

public class CounterTableDO extends ViewModel{
private LiveData<Double> _score;

@DynamoDBTypeConverted(converter = TypeConverter.class)
    @DynamoDBAttribute(attributeName = "score")
    public LiveData<Double> getScore() {
        return _score;
    }
}

Я хочу обнаружить любые изменения в хранилище AWS DynamoDB, которые будут отражены здесь. Я прошел через https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.ArbitraryDataMapping.html

В классе TypeConverter я переопределил 2 метода Первый метод преобразует объект в String. а второй метод предполагает обратное.

public class TypeConverter implements DynamoDBTypeConverter<String,CounterTableDO> {
    @Override
    public String convert(CounterTableDO object) {
        CounterTableDO doubleLiveData=(CounterTableDO)object;
        String liveDataString=null;
        try
        {
            if (doubleLiveData!=null)
            {
                liveDataString=String.format("%s", doubleLiveData.getScore());
            }
        }
        catch (Exception e)
        {
            e.toString();
        }
        return liveDataString;
    }

    @Override
    public CounterTableDO unconvert(String s) {

        CounterTableDO counterTableDO=new CounterTableDO();
        return counterTableDO;
        try{
            if ((s!=null)&&(s.length()!=0)){
                String[] data=s.split("x");
                Double d =Double.parseDouble(data[0].trim());
                counterTableDO.setScore(d);
            }
        }
        catch (Exception e)
        {
            e.toString();
        }
    }
}

Но в обратном методе я не могу установить оценку объекта counterTableDO с помощью инструкции counterTableDO.setScore (d);

Это вызывает ошибку с указанием "setScore (android.arch.lifecycle.livedata в CounterTableDO не может быть применен к java.lang.Double)"

Есть идеи, как сопоставить Android LiveData с предопределенным типом AWS?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
524
1

Ответы 1

DynamoDB supports the following primitive data types and primitive wrapper classes.

String

Boolean, boolean

Byte, byte

Date (as ISO_8601 millisecond-precision string, shifted to UTC)

Calendar (as ISO_8601 millisecond-precision string, shifted to UTC)

Long, long

Integer, int

Double, double

Float, float

BigDecimal

BigInteger

android.arch.lifecycle.LiveData не является одним из этих типов, поэтому вы не можете просто ожидать, что DynamoDBMapper знает, как с этим справиться.

Вам нужно будет написать преобразователь пользовательского типа. Посмотри на это https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.ArbitraryDataMapping.html

Другие вопросы по теме