我使用谷歌购买库,并通过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)}"
一旦分配了price
LiveData,就可以执行类似的操作。
// 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);