searchView를 사용하여 문자열로 데이터베이스를 검색하는 쿼리를 얻으려고하면 커서가 null로 반환되지만 비어 있습니다.검색 SQLite 데이터베이스가 빈 커서를 반환합니다.
@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
//handleIntent(intent);
Log.d("LIST ACTIVITY SEARCH", "onQueryTextCahanged called: "+ newText);
Cursor c = data.getWordMatches(newText, null);
Log.d("LISTACTIVITY", "CURSOR QUERY ROWS/COLS = "+ c.getCount()+" "+c.getColumnCount());
//now set bind cursor data to list view using custim ItemAdpter class
adapter = new ItemAdapter(ViewListOfTests.this, c);
this.setListAdapter(adapter);
return false;
}
그리고 SQLite는 Databasetaking의 검색 방법은 위의 방법에서 문자열 쿼리 :
/*
* methods to search database with String query form searchable widget intent
* in ViewListOfDives ListActivity search bar. Each search returns a cursor which is set to adpter
* in ViewListOfYesys List Activity
*/
public Cursor getWordMatches(String query, String[] columns){
String selection = database.KEY_TESTNAME + " MATCH ?";
String[] selectionArgs = new String[] {query+"*"}; //wildcard *
return query(selection, selectionArgs, columns);
}//end getWordMatches
private Cursor query(String selection, String[] selectionArgs,
String[] columns) {
// return cursor form params passed getWordMatches(Styring query) from search widget ListActivity
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(DATABASE_TABLE);
dbHelperObject = new DbHelper(ourContext);
Cursor cursor = builder.query(dbHelperObject.getReadableDatabase(), columns, selection, selectionArgs, null, null, null);
if(cursor == null){
return null;
}else if(!cursor.moveToFirst()){
cursor.close();
return null;
}
return cursor;
}//end query
호출
은 (SearchView.OnQueryTextListener를 구현하는 ListActivity 인) 내 검색 활동에서 검색하기다른 코드는 빈 커서 반환 여기 실행하는 경우 :
else if(!cursor.moveToFirst()){
cursor.close();
return null;
모든 의견을 환영합니다! 대신이의 인 Ciaran
'String selection = database.KEY_TESTNAME + "LIKE?"; 문자열이 [] selectionArgs = 새 문자열 [] { "%"+ 쿼리 + "%"} 문제가있는 곳을 알기 만하면 – Tarun