У меня есть такой параметр, как
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?




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