我想在textwatcher中使用搜索方法 我做任何事情芽游标总是向我返回假 任何人都可以帮助我! 谢谢
它是我的数据库:
public static void searchSelect(CharSequence s) {
database = SQLiteDatabase.openOrCreateDatabase(destPath + "/database.db", null);
Cursor cursor = database.rawQuery("SELECT * FROM main WHERE title LIKE ' % " + s + " % ' ", null);
SearchFragment.search.clear();
Log.i("LOG", "cursor :" + cursor.moveToNext());
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String title = cursor.getString(cursor.getColumnIndex("title"));
String content = cursor.getString(cursor.getColumnIndex("content"));
String address = cursor.getString(cursor.getColumnIndex("address"));
String imgAddress = cursor.getString(cursor.getColumnIndex("img_adrs"));
String city = cursor.getString(cursor.getColumnIndex("city"));
String category = cursor.getString(cursor.getColumnIndex("category"));
int cityId = cursor.getInt(cursor.getColumnIndex("city_id"));
int catId = cursor.getInt(cursor.getColumnIndex("cat_id"));
int inside = cursor.getInt(cursor.getColumnIndex("inside_id"));
Structure struct = new Structure(id, title, content, address, imgAddress, city, category, cityId, catId, inside);
struct.setId(id);
struct.setTitle(title);
struct.setContent(content);
struct.setAddress(address);
struct.setImgAddress(imgAddress);
struct.setCity(city);
struct.setCategory(category);
struct.setCity_id(cityId);
struct.setCat_id(catId);
struct.setInside(inside);
SearchFragment.search.add(struct);
}
cursor.close();
}
及其片段中的我的文本监视程序
private void TextWatcher() {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("LOG", "text: " + s);
searchSelect(s.toString());
adapterSearch.notifyDataSetChanged();
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
答案 0 :(得分:0)
您正在做2 cursor.moveToNext()
,结果未知。
实例化光标后,放下Log语句并执行:
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
// your code here
} while (cursor.moveToNext())
}
}