Android Live数据

时间:2018-04-17 11:57:46

标签: java android amazon-web-services amazon-dynamodb android-livedata

我有一个像

这样的参数
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(CounterTableDO中的android.arch.lifecycle.livedata无法应用于java.lang.Double)”

任何想法我们如何将Android LiveData映射到AWS预定义类型?

1 个答案:

答案 0 :(得分:0)

  

DynamoDB支持以下原始数据类型和原语   包装类。

     

字符串

     

布尔值,布尔值

     

字节,字节

     

日期(作为ISO_8601毫秒精度字符串,转换为UTC)

     

日历(作为ISO_8601毫秒精度字符串,转换为UTC)

     

很长很长

     

Integer,int

     

加倍,双重

     

漂浮,漂浮

     

的BigDecimal

     

的BigInteger

android.arch.lifecycle.LiveData不是这些类型中的一种,因此您不能指望DynamoDBMapper知道如何处理它。

您需要编写自定义类型转换器。看看这个 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.ArbitraryDataMapping.html