2016-09-28 79 views
0

我试图过滤buttonclick上的listview,但我的数据库查询返回一个空的光标。我找不到问题所在。有人知道为什么游标返回空吗?android sqlite:光标从数据库查询返回空,但不应该

这里是我的代码:

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

尝试'“%” +查询+“%”'在'selectionArgs' – pskink

+0

你尝试手动直接执行SQL语句到你的数据库的命令接口? – user1506104

+0

@pskink:仍然返回空游标 –

回答

1

你可能想尝试使用getText().toString();。由于在这一行:

String catchword = searchText.getText().toString(); 
+0

非常感谢你!这是问题所在。现在光标返回正确的内容。 :) –

+0

很高兴我能帮助:D – Zozinski