你好,安卓开发者。我是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;
}
};