0

我现在正在弄清楚如何在我的 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

现在,未使用 string[] allcolumns。我假设我会通过这样做来使用它

allcolumns + " LIKE"

在 DBAdapter 类的 SearchDB() 方法和DBAdapter.allcolumnsshowResults 方法中。但是 allColumns 不作为 showResults() 方法中的选项提供。这是怎么回事?如何使用搜索对话框返回多个数据库列?

4

1 回答 1

0

我在 Android SDK 的 SearchableDictionary 示例中找到了答案。您必须修改您的 records.xml 文件,以便它具有与您想要返回的列一样多的文本视图。此外,在 showResults() 方法中,在您的 from 字符串中,添加:DBAdapter.KEY_COLUMN1, DBAdapter.KEY_COLUMN2, DBAdapter.KEY_COLUMN3当然,使用您自己的数据库调用和列名。

于 2012-05-30T18:05:53.630 回答