未提交就完成打字事件
问题描述:
我正在尝试创建一个自动填充用户输入文本的editText。例如,只有在用户键入东西之后(例如Lon),该应用可以建议伦敦,因此在之后插入don Lon。我alreay有服务给我的建议,但我不知道什么样的事件用于调用此服务只有在用户写一些东西(我不想在每封信后打电话服务)。未提交就完成打字事件
我想这一点,但它只有在用户按下提交的作品,但我想赶上事件“的用户不再键入”
bornCityTxt.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
//mycode
return true;
}
});
不重要,我怎么可以在同时在一个编辑文本中的用户文本和提示?
真的很感谢。
答
您可以添加一个监听器,然后在afterTextChanged检查有多少个字母已经进入
Handler h = new Handler();
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(s.toString().length()>0){
h.removeCallbacksAndMessages(null); // Cancels previous call
h.postDelayed(new Runnable() {
@Override
public void run()
{
//do something with entered text
}
}, 1000); // 1 second
}
else{
}
}
});
答
尝试的OnKeyListener:
bornCityTxt.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
//your code
return true;
}
});
希望这有助于!
我尝试此解决方案,但由于某些原因,尽管该事件的文字变化,我键入字母后抛在方法解决后显示在edittext中,所以在调用服务器之后。对于这种延迟似乎我不打字 –
我不知道你的应用程序究竟发生了什么,但如果你延迟后致电你的服务会怎么样。编辑代码 – Evgeniy
真的非常感谢! –