当前位置: 首页 > 知识库问答 >
问题:

SearchView上的自定义搜索建议存在问题

麹鸿煊
2023-03-14

我使用带有自定义适配器和提供程序的SearchView(ActionBar)实现了自定义搜索。我遇到的问题是ContentProvider的query()方法只被调用一次,第一次在SearchView中输入东西!如果我继续在视图中键入,则不会调用查询,这样建议列表就不会得到更新。

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.planning, menu);
        SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
        searchView = (SearchView) menu.findItem(R.id.searchAirportItem).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
        searchView.setOnQueryTextListener(this);
        searchView.setOnSuggestionListener(this);
        airportSearchAdapter = new AirportSearchAdapter(getActivity());
        searchView.setSuggestionsAdapter(airportSearchAdapter);
    }
@Override
public boolean onQueryTextChange(String newText) {
    Bundle data = new Bundle();
    data.putString("query", newText);
    getActivity().getLoaderManager().initLoader(1, data, this);
    return true;
}
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        Uri uri = AirportsContentProvider.CONTENT_URI;
        return new CursorLoader(getActivity(), uri, null, null, new String[] { args.getString("query") }, null);
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
        airportSearchAdapter.changeCursor(data);
    }`

知道为什么ContentProvider查询方法只被调用一次吗?不是每次我打字的时候?

共有1个答案

冀越
2023-03-14

正如Selvin所指出的,问题是initLoader()方法。

正确的行是:

getActivity().getLoaderManager().restartLoader(1, data, this);
 类似资料:
  • 我刚接触android,我被一些我认为很简单的东西弄糊涂了…我需要制作一个自定义searchView而不是在ActionBar/Toolbar中,而是在我的RelativeLayout中。问题是我不知道如何定制背景、文本输入颜色、XML中的搜索图标颜色,或者仅仅是它们的属性。此刻,我在我的电话,不能显示我的代码。有人告诉我如何定制吗?给我看任何我能看的教程?提前致谢!!!!

  • 我有一个API,可以对六个字段进行自定义搜索,大致如下,虽然也可能包括敏感数据,因为我在其他地方对相同类型的搜索使用了相同的方法 用户名 电子邮件 名字 姓氏 部门 我通常使用RESTful方法,因此对于用户列表或单个用户,检索用户的过程如下所示 然而,对于搜索,我对如何允许这样做有点困惑。我的初衷是在请求正文中使用JSON,例如 我不能使用请求正文,因为这似乎是合乎逻辑的(和我使用的POST等行

  • 我试图使typefirst远程源到一个Web方法,这将与JSON格式的结果resond。 Ajax正在获得成功,而且它已经成功了;It’正确地复述结果。下面代码中的控制台将按如下方式打印 [{"id":"1","value":"Midun"},{"Id":"2","value":"Midhun2"}] 但是,typeahead建议都没有定义 var typeHeadEngine=new Blood

  • 问题内容: 我正在为基于php的网站创建一个搜索引擎。我需要搜索一个mysql表。 事实是,搜索引擎必须非常“智能”,以便用户可以轻松找到他们的商品(这是一个分类网站)。 我目前已使用以下代码设置了FULLTEXT搜索: 但这还不够… 例如,假设该字段包含类似的内容。如果我搜索,我将不会得到任何结果。尾数(’ci’)只是汽车型号中许多尾数之一,在搜索表时必须将其考虑在内。 或者,如果该字段是什么?

  • 我正在尝试使用SearchContext、IndexSearcherHelperUtil和所有其他东西,为Liferay 7.3.5 GA6开发一个定制的web内容搜索portlet。 我有一些不同字段的DDM结构,从我在elasticsearch索引上看到的,这些字段在嵌套文档中被索引,如下所示: 这与我以前知道的旧方法不同,在旧方法中,自定义字段被索引为 现在我明白了 以下是代码: 这仍然是一

  • 我正在努力让wordpress从页面模板中搜索自定义帖子元。我在互联网上到处找,似乎找不到任何有用的东西。没有插件似乎也能工作。 在我的帖子中,我有一个自定义的meta:“rate”和值:“10”-Wordpress在搜索这些内容时不会给出任何结果。 如果有人能给我写一个搜索页面,我将不胜感激。php页面模板或为我指出正确的方向(我不擅长php)。 以下是我当前的PHP代码: