sca*_*and 0 android android-edittext
我有一个EditText,我用它允许人们搜索数据库。现在,我拥有了运行良好的所有功能,但是,当有人在EditText中输入内容时,我的ListView并没有更新我想要的方式。
我想要它,以便每当有人在EditText中输入任何内容时,它都会更新ListView。但是,当我在其中输入文字时,似乎什么也没发生。
这是我的代码:
@Override
protected void onResume() {
searchText = (EditText)findViewById(R.id.search_text);
ImageView searchView = (ImageView)findViewById(R.id.button_exercises_search);
ImageView searchDoneView = (ImageView)findViewById(R.id.button_exercises_search_done);
if (isSearching) {
searchView.setVisibility(View.GONE);
searchDoneView.setVisibility(View.VISIBLE);
searchText.setVisibility(View.VISIBLE);
}
else {
searchView.setVisibility(View.VISIBLE);
searchDoneView.setVisibility(View.GONE);
searchText.setVisibility(View.GONE);
}
searchText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
String query = searchText.getText().toString();
if (query.length() > 0) {
cursor = datasource.fetchFilterExercises(dayDataID, query);
}
else {
cursor = datasource.fetchAddExercises(dayDataID);
}
dataAdapter.changeCursor(cursor);
return false;
}
});
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
这两个按钮只是图标,单击后将显示/隐藏用于搜索的EditText。我知道数据源可以正确地获取我想要的数据,等等。当我在EditText中输入文本时,似乎什么也没有发生searchText。我应该将其移到onCreate()吗?要么?
您可以尝试使用searchText.addTextChangedListener(...)所有逻辑并将其移到其afterTextChanged(...)回调中。根据以下文件View.OnKeyListener():
注册在此视图中按下硬件键时要调用的回调。软件输入法中的按键操作通常不会触发此侦听器的方法。
希望这对您有帮助!