Android 编辑文本中的文本观察程序正在使编辑文本变慢

Android 编辑文本中的文本观察程序正在使编辑文本变慢,android,textwatcher,Android,Textwatcher,在我的平板电脑应用程序中,我使用了片段,其中一个片段有多个EditText,我有一个线性布局,可以在该片段中添加用户希望添加多少次的子布局 此子布局有两个edittext,这两个edittext都有 添加TextChangeListener(Textwatcher)和 onfocuschangelistner 每次更改文本时,都会在编辑文本中检查3个条件 每次焦点改变时,编辑文本和文本中都会检查两个条件 在做了所有这些条件检查之后,我面临的问题是,edittext键入速度太慢,就像我键入了一封电

在我的平板电脑应用程序中,我使用了片段,其中一个片段有多个EditText,我有一个线性布局,可以在该片段中添加用户希望添加多少次的子布局

此子布局有两个edittext,这两个edittext都有

  • 添加TextChangeListener(Textwatcher)和
  • onfocuschangelistner
  • 每次更改文本时,都会在编辑文本中检查3个条件 每次焦点改变时,编辑文本和文本中都会检查两个条件

    在做了所有这些条件检查之后,我面临的问题是,edittext键入速度太慢,就像我键入了一封电子邮件,整个电子邮件在5秒或更长时间后被完全键入

    这是子布局中1个编辑文本的代码:

    receiverName.setOnFocusChangeListener(new OnFocusChangeListener() {
    
            @Override
            public void onFocusChange(View paramView, boolean hasFocus) {
                receivernameFocus = hasFocus;
                if(hasFocus)
                {
                    if(receiverName.getText().toString().length()>0)
                        ReceiverName_btn_cancel.setVisibility(View.VISIBLE);
                    else
                        ReceiverName_btn_cancel.setVisibility(View.INVISIBLE);
                }
                else
                    ReceiverName_btn_cancel.setVisibility(View.INVISIBLE);
            }
        });
        receiverName.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence paramCharSequence, int paramInt1,int paramInt2, int paramInt3) {
    
    
                if(receivernameFocus)
                {
                    if(receiverName.getText().toString().length()>0)
                    {
                        receiverNamePresent = true;
                        ReceiverName_btn_cancel.setVisibility(View.VISIBLE);
                    }
                    else
                    {
                        receiverNamePresent = false;
                        ReceiverName_btn_cancel.setVisibility(View.INVISIBLE);
                    }
                }
                else
                    ReceiverName_btn_cancel.setVisibility(View.INVISIBLE);
    
                if(receiverEmailPresent && receiverNamePresent)
                    addReceiver.setBackgroundResource(R.drawable.plus_receiver);
                else
                    addReceiver.setBackgroundResource(R.drawable.plus_deselect_receiver);
            }
    
            @Override
            public void beforeTextChanged(CharSequence paramCharSequence,
                    int paramInt1, int paramInt2, int paramInt3) {
            }
    
            @Override
            public void afterTextChanged(Editable paramEditable) {
            }
        });
    
    其他edittext存在相同的条件,每次用户膨胀另一个视图时,也会为新视图创建相同的edittext集

    我无法删除这些条件,所有这些条件都是必需的,您可以看到它只是一些按钮可见性或设置背景资源

    如何优化此代码,或者如何加快android平板电脑的edittext键入速度

    编辑:如果我每秒键入10个字母,它在edittext中每秒仅显示1个字母(因此10秒后所有10个字母都将在edittext中可见),我认为这是因为在onTextChanged方法中进行了多个条件检查,显示文本的延迟对于用户体验来说太大了

    如何使编辑文本在我打字时以最快的速度显示文本


    感谢此处
    公共void onTextChanged(CharSequence paramCharSequence,int paramInt1,int paramInt2,int paramInt3)
    通常采用以下格式:

    public void onTextChanged(CharSequence s, int start, int before, int count)
    
    因此,这里需要使用
    paramInt3
    执行一些操作。如果您希望在输入3个字母后显示建议文本,请按以下方式在此处执行操作:

    public void onTextChanged(字符序列、int start、int before、int count) {

    }

    在这里,我在后台更新了服务器端的文本。您只需要修改文本的来源部分,并在此处使用此代码


    谢谢。

    每次我都要检查edittext中是否有文本,我已经检查了您提到的参数,但是键入速度没有提高。我告诉您如果(计数%3==1)条件,键入速度没有提高。它将在3个字母后显示匹配的文本我不需要匹配的文本,我只想检查文本是否存在于edittext中。您需要使用适配器来调整这些edittext中已经存在的文本,并且计数将与此edittext匹配。抱歉,我没有使用listview,或者我根本没有使用适配器,请仔细看看我问的问题,我的edittext中的键入速度非常慢,如果我每秒键入10个字母,它在edittext中只显示每秒1个字母,我相信这是因为在onTextChanged方法中进行了多个条件检查,我的问题是如何使edittext在我键入文本时以最快的速度显示文本
            if (count%3 == 1) 
            {
               adapter.clear();
               GetPlaces task = new GetPlaces();                   
               task.execute(dep_place.getText().toString());
            }