setOnKeyListener不适用于EditText

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()吗?要么?

Evo*_*vos 5

您可以尝试使用searchText.addTextChangedListener(...)所有逻辑并将其移到其afterTextChanged(...)回调中。根据以下文件View.OnKeyListener()

注册在此视图中按下硬件键时要调用的回调。软件输入法中的按键操作通常不会触发此侦听器的方法。

希望这对您有帮助!