Java 在键入Android EditText时如何调用函数
这是我的设想。我想在EditText中集成一个搜索功能。但我不希望它是一个外部按钮,我希望在编辑框中键入时调用该函数Java 在键入Android EditText时如何调用函数,java,android,android-edittext,Java,Android,Android Edittext,这是我的设想。我想在EditText中集成一个搜索功能。但我不希望它是一个外部按钮,我希望在编辑框中键入时调用该函数 我怎样才能做到这一点?谢谢。您需要一个TextWatcher来编辑您的EditText。当附加的EditText中的文本发生更改时,将调用这三个回调 yourEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequ
我怎样才能做到这一点?谢谢。您需要一个
TextWatcher
来编辑您的EditText
。当附加的EditText
中的文本发生更改时,将调用这三个回调
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
您可以在文档中找到更多详细信息,您可以使用
,它是一个可编辑的文本视图,在用户键入时显示完成建议
公共类CountriesActivity扩展活动{
创建时受保护的空隙(捆绑冰柱){
超级冰柱;
setContentView(R.layout.countries);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_下拉列表_项目_1行,国家/地区);
AutoCompleteTextView文本视图=(AutoCompleteTextView)
findViewById(R.id.国家/地区列表);
setAdapter(适配器);
}
私有静态最终字符串[]国家/地区=新字符串[]{
“比利时”、“法国”、“意大利”、“德国”、“西班牙”
};
}
您可以为您的编辑框实现一个textwatcher,在ContextChanged事件中,首先查看您是否输入了最小字符数,例如,如果输入长度大于或等于3,则启动一个计时器,该计时器将在2秒后执行。但是如果您再次更改了ContextChanged,请取消并清除上一个计时器,然后重新设置。大概是这样的:
private TextWatcher textWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() >= 3){
scheduleTimer(); //Reschedule timer.
}else{
cancelTimer(); //cancel scheduled timer
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
};
将textwatcher设置为edittext
et_search_box.addTextChangedListener(textWatcher);
一种调度定时器的方法
Timer searchScheduleTimer = null;
private void scheduleTimer(){
cancelTimer();
searchScheduleTimer = new Timer("search_scheduler");
searchScheduleTimer.schedule(new TimerTask() {
@Override
public void run() {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//do your processing here.
}
});
}
}, 1500);
}
取消计划计时器的方法
private void cancelTimer(){
if (searchScheduleTimer != null){
searchScheduleTimer.cancel();
searchScheduleTimer.purge();
searchScheduleTimer = null;
}
}
你的问题不清楚
private void cancelTimer(){
if (searchScheduleTimer != null){
searchScheduleTimer.cancel();
searchScheduleTimer.purge();
searchScheduleTimer = null;
}
}