实时过滤ListView

mic*_*erl 3 android android-listview android-asynctask

我想ListView实时过滤一下.我有一个EditTextActionBar,每一次用户写了一个角色,我想更新的光标ListView过滤的信息.

我做了一个AsyncTask来执行查询,但我有两个问题:

1º)如果用户输入三个字符我正在创建三个AsyncTasks(一个用于搜索第一个字符,一个用于搜索两个第一个字符,最后一个用于搜索三个字符).有没有一种简单的方法来说明AsyncTask用新的任务替换上一个任务?

2º)我怎样才能稍微延迟启动AsyncTask?因此,如果用户在不停止的情况下键入三个字符,我将不会创建AsyncTask直到结束.

谢谢!

cod*_*der 5

嗯...不完全确定为什么你AsyncTask实时使用搜索.这就是我(并且已经成功)做到的方式.

添加TextChangeListener到您的Edittext:

editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            searchResults = myDbHelper.searchAll(s.toString());
            searchAdapter.notifyDataSetChanged();
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
Run Code Online (Sandbox Code Playgroud)

每次用户按下键时,我都在搜索sqlite数据库.我searchResults用来填充ListView,所以在我设置获取搜索结果后,告诉列表适配器数据集已更改.

希望这可以帮助.