2016-09-28 27 views
2

我有两个TextInputEditText领域:Android的2个TextInputEditText和双向addTextChangedListener

TextInputEditText fromData = (TextInputEditText) view.findViewById(R.id.fromData); 
TextInputEditText toData = (TextInputEditText) view.findViewById(R.id.toData); 

两个领域具有addTextChangedListener(),应该改变对方的文本。但是这会导致错误(递归)。因为当我在fromData中写入一些文本时,toData文本也会发生变化,并且如果toData文本从数据更改也应该更改。

如何让textchangelistener以两种方式工作?

回答

0

覆盖侦听器,并且如果它正在更改为的文本与它已经相同,则不要更改它。

因此,在fromData中更改了文本,并且它调用了on文本更改了的侦听器,更改后的文本检查被更改的文本是否等于文本视图中已存在的文本,如果它没有做任何事情。

onTextChanged(String newText) { 
    if (!newText.equals(fromData.getText())) { 
      fromData.setText(newText); 
    } 
} 
0

您可以定义一个全局变量像focusedTextView然后加上触摸听众都textviews。现在,当一个特定的观点被触动。

您只需将该变量的值设置为该视图。

最后,在addTextChangeListener 只是检查这是什么全局变量的电流值,只是改变其重点不在意其他的TextView的文本。

希望这会给你你想要的双向结果。

让我知道它是否改变了你的任何东西。