一尘不染

将建议从网络资源搜索到“快速搜索”框中

json

我正在应用程序中构建搜索,并且需要一种将从服务器中以JSON数组形式获取的建议放入快速搜索框下方显示的建议列表中的方法。

有没有一种简单的方法可以使快速搜索框读取此类资源?

当前,我正在尝试使用ContentProvider,但是接口方法清楚地表明应该在查询数据库以获取建议。我想如果您要搜索存储在应用程序内部的数据,则使用ContentProvider是正确的方法。但是我不确定,如果您需要查询网络资源,这是正确的方法。

对于我来说,将我从网络中获得的建议保存到本地数据库中是没有意义的,因为这些建议及其命中率有时会有所不同。

有人遇到这个问题吗?还是可以将我引向类似问题的方向?我在堆栈上找不到提到网络建议的问题。


阅读 250

收藏
2020-07-27

共1个答案

一尘不染

在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;

光标用于快速搜索框中以填充建议列表。

2020-07-27