如何获取Spinner的未选中值?IoT Firebase应用引脚控制问题
解决Spinner未选中值获取及IoT引脚控制问题
我来帮你搞定这个问题!你的Spinner只有HIGH和LOW两个选项,其实根本不用复杂地去“获取未选中项”——因为未选中项就是当前选中值的对立面,直接通过简单判断就能得到,而且这样还能让你的代码更简洁易维护。
第一步:写一个工具方法快速获取反向值
首先创建一个小方法,输入当前选中的引脚值,直接返回对应的反向值:
private String getOppositePinState(String currentState) { // 因为只有两个选项,直接用三元表达式切换 return currentState.equals("HIGH") ? "LOW" : "HIGH"; }
第二步:替换原有逻辑,简化代码
把你原来analogvalue < value块里的重复if-else逻辑,换成调用这个工具方法:
if(analogvalue < value){ // 处理Pin1:设置为当前选中值的反向 String pin1TargetState = getOppositePinState(spinner1.getSelectedItem().toString()); fire2.child("Pin1").setValue(pin1TargetState); // 处理Pin2:同理 String pin2TargetState = getOppositePinState(spinner2.getSelectedItem().toString()); fire2.child("Pin2").setValue(pin2TargetState); }
额外排查点(解决功能失效问题)
除了简化逻辑,你还可以检查这些可能导致功能不工作的点:
- 确认
fire2是正确的Firebase数据库节点引用,有没有拼写错误或者路径错误? - 检查
StringValue和link2的取值逻辑,确保if(StringValue.length()>0 && link2.length()>0)这个条件在需要的时候能被满足(如果条件不成立,后面的所有逻辑都不会执行)。 - 可以在
analogvalue < value的块里加个Log日志,比如Log.d("IoT_CONTROL", "IR未触发,切换引脚状态:Pin1->" + pin1TargetState),确认这段代码是否真的被执行到了。
这样修改后,不仅能轻松得到你需要的“未选中值”,代码也更简洁,出错概率更低。
内容的提问来源于stack exchange,提问作者lalitahuja
相关产品推荐
相关产品推荐

