我正在应用程序中构建搜索,并且需要一种将从服务器中以JSON数组形式获取的建议放入快速搜索框下方显示的建议列表中的方法。
有没有一种简单的方法可以使快速搜索框读取此类资源?
当前,我正在尝试使用ContentProvider,但是接口方法清楚地表明应该在查询数据库以获取建议。我想如果您要搜索存储在应用程序内部的数据,则使用ContentProvider是正确的方法。但是我不确定,如果您需要查询网络资源,这是正确的方法。
对于我来说,将我从网络中获得的建议保存到本地数据库中是没有意义的,因为这些建议及其命中率有时会有所不同。
有人遇到这个问题吗?还是可以将我引向类似问题的方向?我在堆栈上找不到提到网络建议的问题。
在developer.android.com上找到了解决方案:
如果您有从网络位置得到的建议,则可以在从服务器上获得结果时即时建立游标。
这在ContentProvider的query()方法中:
String[] columns = { BaseColumns._ID, SearchManager.SUGGEST_COLUMN_TEXT_1, SearchManager.SUGGEST_COLUMN_INTENT_DATA }; MatrixCursor cursor = new MatrixCursor(columns); for (int i = 0; i < arr.length(); i++) { String[] tmp = {Integer.toString(i), arr.getString(i), arr.getString(i)}; cursor.addRow(tmp); } return cursor;
光标用于快速搜索框中以填充建议列表。