You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何将Spinner取值经TextView1中转后与0.032相乘并显示到TextView2

解决Spinner选中值计算并显示的问题

我来帮你搞定这个需求,先梳理下你现有代码里的小问题,再给你修正后的完整方案:

现有代码的问题点

  • 你用Integer.parseInt()去解析"380000.00"这种带小数的字符串,会直接抛出NumberFormatException,因为整数解析器不认小数点。
  • 计算乘以0.032的逻辑和Spinner的选中事件是脱节的,现在的代码没法在用户选完Spinner后自动更新textView2。

修正后的完整实现

首先,我们把计算逻辑整合到Spinner的选中处理方法里,每次用户选完选项,自动更新两个TextView的值:

@SuppressLint({"ResourceAsColor", "SetTextI18n"})
private void handlePropertySelection() {
    String selectedProperty = spinner.getSelectedItem().toString();
    double propertyValue = 0.00; // 默认值

    // 根据选中的房产设置对应数值
    if (selectedProperty.equals("Select Property")) {
        propertyValue = 0.00;
    } else if (selectedProperty.equals("Apartment A3")) {
        propertyValue = 380000.00;
    }
    // 后续可以继续添加更多房产的判断逻辑

    // 更新TextView1显示选中的房产价值
    textView.setText(String.format("%.2f", propertyValue));
    textView.setTextColor(Color.parseColor("#F29027"));

    // 计算并更新TextView2:乘以0.032后的结果
    double calculatedResult = propertyValue * 0.032;
    textView2.setText(String.format("%.2f", calculatedResult));
    textView2.setTextColor(Color.parseColor("#F29027"));
}

然后,别忘了给Spinner设置选中监听器,这样用户选完选项后才会触发上面的方法(把这段代码放到onCreate或者初始化Spinner的地方):

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        handlePropertySelection(); // 调用处理方法
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // 可选:处理没有选中任何项的情况
        textView.setText("0.00");
        textView2.setText("0.00");
    }
});

几个细节说明

  • 用String.format("%.2f", value)格式化显示,保证数值始终显示两位小数,看起来更规范(比如0会显示成0.00,380000显示成380000.00)。
  • 用double类型存储所有数值,避免解析带小数的字符串时出错。
  • 把所有逻辑整合到一个方法里,代码更清晰,后续维护也方便。

内容的提问来源于stack exchange,提问作者Sindano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 10:37:36