与关于Swing(The Elegant way to handle Cyclic Event in Java?)的问题类似,我正在寻找一种优雅的方法来避免两个小部件视图相互依赖的循环事件链。
更具体地说,我有两个EditText's
,其中一个代表以kg为单位的重量,另一个代表lb的重量。用户应该能够输入任何一个文本并让另一个更新为他/她的类型
我发现控制器中更改操作的唯一方法是在每个TextWatcher
视图上注册EditText
。但是,如果我修改回调中的其他EditText
,我如何优雅地避免出现循环事件链。
我尝试了对EditText
进行子类化并通过重载TextWatcher
将它们绑定在一起而不使用setText
,并让该方法修改该值并调用另一个控制器的setText
。但这并不能调用setText
,这似乎是用户从UI输入文本而不是以编程方式输入文本的情况。
任何想法都会有所帮助,谢谢。
答案 0 :(得分:0)
当控制器聚焦且未聚焦时,我最终添加并删除了TextWatcher's
。这样做的缺点是,在以编程方式设置控制器文本时不使用相同的镜像代码(除非我以编程方式设置焦点,这不是一个非常好的解决方案,IMO)。
它工作正常,但我仍然认为那里有一个更清洁的解决方案。