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。也许有人知道如何修复此代码?也许我必须使用其他代码?我需要它工作......非常感谢您的回答!
答案 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;
}
};