当前位置: 首页 > 知识库问答 >
问题:

如何处理多个EditText的单个TextWatcher事件?

纪勇军
2023-03-14

我在视图布局中使用了三个EditText小部件,用于三个不同的过滤器。如果我输入其中一条,另一条文本不应该是空白的吗?

下面是我的片段:

public class Fragment_Assigned extends Fragment {
    public EditText et_first;
    public EditText et_second;
    public EditText et_third;

    private ArrayList<obj> list_first;
    private ArrayList<obj> list_second;
    private ArrayList<obj> list_third;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        et_first = (EditText) v.findViewById(R.id.et_first);
        et_second = (EditText) v.findViewById(R.id.et_second);
        et_third = (EditText) v.findViewById(R.id.et_third);

        listoffline = //getFrom DataBase
        filterListCustomer = listoffline;
        filterListModel = listoffline;
        filterListCompany = listoffline;

        et_first.addTextChangedListener(new GenericTextWatcher(et_first));
        et_second.addTextChangedListener(new GenericTextWatcher(et_second));
        et_third.addTextChangedListener(new GenericTextWatcher(et_third));
    }
}

GenericTextWatcher方法:

private class GenericTextWatcher implements TextWatcher {
    private View view;

    private GenericTextWatcher(View view) {
        this.view = view;
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void afterTextChanged(Editable editable) {
        String text = editable.toString();
        switch (view.getId()) {
            case R.id.et_first:
                //someMethod;
                break;
            case R.id.et_second:
                //someMethod;
                break;
            case R.id.et_third:
                //someMethod;
                break;
        }
    }
}

当我运行这个程序并输入EditText时,logcat看起来是这样的:

03-03 15:25:39.616 25952-25952/com.xyz.abcI/art:显式并发标记扫描GC释放23671(1194KB)AllocSpace对象,3(43KB)LOS对象,26%免费,11MB/15MB,暂停908us总计15.894ms

03-03 15:25:39.99125952-25952/com。xyz。abc I/art:显式并发标记扫描GC释放20553(963KB)AllocSpace对象,2(6MB)LOS对象,39%空闲,4MB/8MB,暂停1.523ms总计22.856ms

03-03 15:25:40.356 25952-25952/com.xyz.abcI/art:显式并发标记扫描GC释放14366(568KB)AllocSpace对象,0(0B)LOS对象,40%自由,5MB/8MB,暂停2.214ms总计30.546ms

共有1个答案

宗翔宇
2023-03-14

空您剩余的编辑文本焦点更改

    et_first.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            et_second.setText("");
            et_third.setText("");
        }
    });

    et_second.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            et_first.setText("");
            et_third.setText("");
        }
    });

    et_third.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            et_second.setText("");
            et_first.setText("");
        }
    });
 类似资料:
  • 我正在尝试使用TextWatcher界面,以检测哪个EditText被更改了。我有一个使用10个EditTexts的活动,为每个文本使用10个TextWatchers看起来很奇怪。 有没有办法只使用一个TextWatcher,并在函数afterTextChanged中的可编辑项上使用switch语句?

  • 我有3个EditText字段,我为这些字段创建了3个可观察对象。 当这三个字段都有值时,我想启用一个按钮。用户可以在字段中按任意顺序输入值。我该怎么做? 我用zip实现了这一点。 当我在所有三个文本字段中输入某个内容时,上面的这种情况就会起作用。e、 g.我在所有三个文本字段中输入了1个字符,然后按钮将被启用。但当我删除这三个字段中的任何一个字符时。zip不会被调用,因为它将等待其他2个文本字段流

  • null 你认为我应该知道的其他方法?

  • 我有多个自定义技能意图。我想处理取消所有自定义意图的事件。我怎么能得到取消被调用。 我们如何在node JS Alexa中处理这个问题

  • 问题内容: 我正在尝试向redux-form添加第二个提交按钮。 这两个按钮都应调度一个保存数据的操作,但是应根据所按下的按钮将用户路由到其他页面。 因此,我定义了一个处理程序,该处理程序作为prop 传递给表单。 但据我所知,只有表单 数据 传递给此处理程序: 注意的文档: 传递给 或传递给的函数。它将运行同步和异步验证,并且,如果表单有效,它将使用表单数据的内容进行调用。 我所缺少的是一种还将

  • 在JavaFX中,是否可以从一个类中处理多个事件类型(例如ActionEvent、MouseEvent等),而无需匿名事件处理程序?我尝试了以下操作,但这只是产生了一个编译时错误。