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
相关产品推荐
相关产品推荐

