实时数据<String>浮点解析替换



我使用谷歌购买库,并通过LiveData使用价格。标价:看起来是20.99美元。我必须解析这些数据并只打印20.99。为此,我认为我需要将LiveDataString数据转换为float或integer。我该怎么做?

static public class SkuDetails {
final public String sku;
final public LiveData<String> title;
final public LiveData<String> description;
final public LiveData<String> price;
final public int iconDrawableId;
SkuDetails(@NonNull String sku, TrivialDriveRepository tdr) {
this.sku = sku;
title = tdr.getSkuTitle(sku);
description = tdr.getSkuDescription(sku);
price = tdr.getSkuPrice(sku);
iconDrawableId = skuToResourceIdMap.get(sku);
}
}

BillingClient;

public final LiveData<String> getSkuPrice(String sku) {
LiveData<SkuDetails> skuDetailsLiveData = skuDetailsLiveDataMap.get(sku);
assert skuDetailsLiveData != null;
return Transformations.map(skuDetailsLiveData, SkuDetails::getPrice);
}

编辑:对不起,我忘了添加正确打印价格信息的代码行。我已经在下面分享了我需要解析的代码。

public LiveData<String> getSkuPrice(Subscription var1) {
return getSkuDetails(var1.getSku()).price;
}

Activity.xml;

android:text="@{viewModel.getSkuPrice(subscription)}"

一旦分配了priceLiveData,就可以执行类似的操作。

// get the string value from "price" LiveData
String strPrice = price.getValue();

//remove dollar sign from this price
String priceWithoutDollarSign = strPrice.replaceAll("[^\d.]", "");

//convert/parse it as float just in-case needed otherwise priceWithoutDollarSign will be enough
float resultPrice = Float.parseFloat(priceWithoutDollarSign);

最新更新