SQLite SearchView没有正确过滤数据

时间:2016-05-06 05:21:05

标签: java android sqlite listview

Hello Android开发者。我是Java编程的新手,我遇到了一个问题。我用SQLite数据库创建了一个程序。这是一个简单的程序,具有添加和删除功能。现在我想添加搜索/过滤功能,我想使用searchView。我按照教程并在setOnQueryTextListener中使用了这段代码:

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String text) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String text) {
                adapter.getFilter().filter(text);
                return false;
            }
        });

但是当我使用这段代码时,它会过滤元素,但是在使用此方法搜索一次之后,我无法再将任何项添加到数据库或从中删除它们。我有一个只有名字的listView。也许有人知道如何修复此代码?也许我必须使用其他代码?我需要它工作......非常感谢您的回答!

1 个答案:

答案 0 :(得分:0)

我只是回答了我对你的帖子的理解。

如果要在添加或删除项目后查看更改,则应通知适配器项目已被修改。这意味着您必须添加此代码。

adapter.notifyDataSetChanged();

lv.setAdapter(适配器);

如果您使用arraylist来显示数据,您应该清除此类反对者。

planlist.clear();

请参阅我的代码以供参考

SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String newText) {

            planlist.clear();
            planlist = db.getplanlist(newText);
            adapter = new PlansAdapter(PlansActivity.this, planlist);
            adapter.notifyDataSetChanged();
            lv.setAdapter(adapter);

            return true;
        }

        @Override
        public boolean onQueryTextSubmit(String newText) {

            return true;
        }
    };