在我的平板电脑应用程序中,我使用了片段,一个片段有多个Edittexts,我有一个线性布局,它将添加一个子布局,用户希望添加的次数,在该片段中
此子布局有两个edittext,这个edittext都有
每次更改文本时,都会在edittext中检查3个条件 每次改变焦点时,都会在edittext
中检查2个条件完成所有这些条件检查后,我遇到的问题是,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个字母,则在编辑文本中每秒只显示1个字母(因此10秒后所有10个字母都会在edittext中显示),我相信这是因为多个条件检查而发生的在onTextChanged方法中,显示文本的延迟对于用户体验来说太过分了。如何让edittext以我输入的速度显示文本
由于
答案 0 :(得分:0)
此处public 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(CharSequence s,int start,int before,int count) {
if (count%3 == 1)
{
adapter.clear();
GetPlaces task = new GetPlaces();
task.execute(dep_place.getText().toString());
}
}
这里我在后台更新了服务器端的文本。您只需要修改此部分,您的文本将在此处使用此代码。
感谢。