我现在正在弄清楚如何在我的Android应用中实现搜索对话框。我有它工作,但它只输出一列。我想我看到如何让它搜索多个列(在我的例子中是三列),但Eclipse说我错了。这是我在DBAdapter类中获取记录的方法:
//--- GET RECORDS FOR SEARCH
public Cursor searchDB(String query) {
String[] allColumns = new String[]{ KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 };
return db.query(true, DB_TABLE, new String[] { KEY_ROWID,
KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }, KEY_COLUMN1 + " LIKE" + "'%" + query + "%'", null, null, null, null, null);
}
//--- END Get Records for Search
,这是活动中显示返回结果的方法:
//--- Show Results method
private void showResults(String query) {
Cursor cursor = DBHelper.searchDB(query);
startManagingCursor(cursor);
String[] from = new String[] { DBAdapter.KEY_COLUMN1 }; //--- change this?
int[] to = new int[] { R.id.text1 };
SimpleCursorAdapter records = new SimpleCursorAdapter(this,
R.layout.record, cursor, from, to);
setListAdapter(records);
}
//--- END Show Results method
现在,字符串[] allcolumns未被使用。我以为我会用
来使用它allcolumns + " LIKE"
在DBAdapter类的'SearchDB()方法中,以及DBAdapter.allcolumns
在showResults方法中。但是allColumns不作为showResults()方法中的选项提供。这是怎么回事?如何使用“搜索”对话框返回多个数据库列?
答案 0 :(得分:0)
我在Android SDK的SearchableDictionary示例中找到了答案。您必须修改您的records.xml文件,以便它具有您想要返回的列的文本视图。另外,在showResults()方法中,在from字符串中,添加:DBAdapter.KEY_COLUMN1, DBAdapter.KEY_COLUMN2, DBAdapter.KEY_COLUMN3
当然要使用自己的数据库调用和列名。