我需要从服务器读取字符串列表,该列表将被提供给适配器,以便在用户输入时在autocompletetextview中搜索建议。为了看看如何方便地使用textchangelistener,我写了这个:
TextWatcher tw
= new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "text has changed!", Toast.LENGTH_LONG).show();
// getlist() <-- this calls an AsyncTask instance
}
};
正如预期的那样,当我输入qwerty软键盘时,每次按下一个键时都会显示Toast消息,这是正常的。但是,如果用户有一个软键盘,你必须按两次或三次相同的键来写一个确定的字母,例如,如果你想要一个'c',你必须按三次“2”键。我尝试了上面的代码,显然消息显示了三次,但每个新提交的字母只需要一次,请记住最终评论的asyncstask对象可以在那里工作,这是耗电的任务。一些建议?