【发布时间】:2019-07-19 23:55:14
【问题描述】:
我正在尝试使用 SearchView 搜索 SQLite 数据库。目前,我只能按一个字搜索。
例如“你好,我叫 Bob,我有一只猫”
如果我要从上面的文本中搜索一个单词(“Bob”),则会显示整行。
但是,我希望在搜索“bob cat”或“my name have”时也显示上述文本。因为这会返回一个空白列表视图。
此数据显示在列表视图中。
private void searchUsers(SearchView searchDB) {
Cursor cursor = myDb.searchUsers(searchDB);
if (cursor.getCount() == 0) {
Toast.makeText(activity_symptcheck.this, "No data to show", Toast.LENGTH_SHORT).show();
} else {
while (cursor.moveToNext()) {
listItem.add("Illness: " + "\n" + cursor.getString(1) + "\n" + "Symptoms: " + "\n" + cursor.getString(2) + "\n" + "Treatments: " + "\n" + cursor.getString(3));
}
cursor.close();
myDb.close();
}
searchDB.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String searchTxt) {
return false;
}
@Override
public boolean onQueryTextChange(String searchTxt) {
ArrayList<String> userslist = new ArrayList<>();
for (String user : listItem) {
if (user.toLowerCase().contains(searchTxt.toLowerCase())) {
userslist.add(user);
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity_symptcheck.this,
android.R.layout.simple_list_item_1, userslist);
ListIllness.setAdapter(adapter);
return true;
}
});
}
public Cursor searchUsers(SearchView searchDB) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM "+TABLE_NAME+" WHERE "+COL_3+" LIKE '%"+searchDB.getQuery()+"%'"+searchDB.getQuery(), null);
return cursor;
}
【问题讨论】:
标签: java android sqlite listview searchview