The query with LIKE does not work correctly. The result is given only if you enter an exact query. For example: Request: Invisible- result Invisible, request: Visible - no result. What's my mistake. Thanks a lot in advance.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
userFilter = findViewById(R.id.userFilter);
listView = findViewById(R.id.listView);
listView.setVisibility(View.INVISIBLE);
final DatabaseAccessSmeta databaseAccessSmeta = DatabaseAccessSmeta.getInstance(this);
databaseAccessSmeta.open();
String poisk = userFilter.getText().toString();
List<String> quotes = databaseAccessSmeta.Search(poisk);
databaseAccessSmeta.close();
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.region_list, quotes);
listView.setAdapter(adapter);
userFilter.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
String query = (s != null) ? s.toString() : "";
if (query.length() >= 3) {
listView.setVisibility(View.VISIBLE);
adapter.getFilter().filter(query);
} else {
listView.setVisibility(View.INVISIBLE);
adapter.getFilter().filter("");
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
public void onTextChanged(CharSequence s, int start, int before, int count) { }
});
}
Database query:
public List<String> Search(String poisk) {
List<String> mylist = new ArrayList<>();
String query;
query = "SELECT * FROM smeta_name WHERE rabota LIKE '%"+poisk+"%'";
this.database = openHelper.getWritableDatabase();
Cursor cursor = database.rawQuery(query, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
mylist.add(cursor.getString(cursor
.getColumnIndex("rabota")));
cursor.moveToNext();
}
cursor.close();
return mylist;
}