我正在尝试在buttonclick上过滤listview,但我的数据库查询返回一个空光标。我找不到问题所在。有人知道光标返回空的原因吗?
这是我的代码:
private void initSearch() {
searchText = (EditText) findViewById(R.id.search_edit_text);
ImageButton searchEntry = (ImageButton) findViewById(R.id.button_search_entry);
searchEntry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.startAnimation(buttonAnimation);
String catchword = searchText.toString();
if (catchword.equals("")) {
Toast.makeText(SearchActivity.this, noCatchword, Toast.LENGTH_LONG).show();
} else {
Cursor match = myDb.getWordMatches(catchword); //cursor is empty
cursorAdapter.swapCursor(match);
cursorAdapter.notifyDataSetChanged();
}
}
});
}
这是数据库方法:
public Cursor getWordMatches(String query) {
//Cursor c = database.rawQuery("SELECT * FROM "+TABLE_NAME+ " WHERE "+COL_HEAD+ " = '%" +query+"%' OR " +COL_TEXT+ " = '%"+query+"%'", null);
Cursor c = database.rawQuery("SELECT * FROM " + TABLE_NAME+ " WHERE "+COL_HEAD+ " LIKE ? OR "+COL_TEXT+ " LIKE ?", new String[]{query});
if(c != null){
c.moveToFirst();
}
return c;
}
我已经尝试了两个查询,但是两个都返回一个空光标。 行正确地插入到我的数据库中,因为其他一切正常,所以这不是我问题的原因。
提前致谢!
答案 0 :(得分:1)
您可能想尝试使用getText().toString();
。如同这一行:
String catchword = searchText.getText().toString();