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