SQLite SearchView未正确筛选数据



你好,安卓开发者。我是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。也许有人知道如何修复这个代码?也许我必须使用其他代码?我需要它工作。。。非常感谢你的回答!

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

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

adapter.notifyDataSetChanged();

lv.setAdapter(适配器);

如果你使用数组列表来显示数据,你应该像这样清除数组列表。

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;
        }
    };

最新更新