【问题标题】:Android how to replace soft keyboard hints with searchview custom suggestions?Android如何用searchview自定义建议替换软键盘提示?
【发布时间】:2016-03-16 01:33:34
【问题描述】:

情况

我有一个搜索视图,用户可以在其中搜索位于本地 sqlitedatabase 中的项目,并且在用户键入时会弹出一个建议列表。我使用 MatrixCursor、支持库的 SimpleCursorAdapter 和 searchview.setSuggestionAdapter() 来执行此操作。这在纵向模式下可以正常工作,但在横向模式下会出现问题。

问题在于,出现的不是所需的自定义建议,而是 android.database.Matrix...。

问题

如何让我的自定义建议以横向模式显示(在软键盘或任何地方)?我没有完全禁用提示的选项,因为如果他们拼错了项目,用户会感到困惑,然后期望结果在没有出现时出现。

代码

片段.java

private void setUpSingleSearch(final Menu menu, final MenuItem singleSearchItem) {
    searchView = (SearchView) MenuItemCompat.getActionView(singleSearchItem);
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            displaySuggestions(newText);
            return false;
        }
    });
}

private void displaySuggestions(String query) {
    MatrixCursor matrixCursor = new MatrixCursor(new String[]{BaseColumns._ID,
            RestaurantTable.Cols.NAME, RestaurantTable.Cols.ID});
    RestaurantListing restaurantListing = new RestaurantListing(getContext());
    restaurantListing.getRestaurantSuggestions(currListName, "Name", matrixCursor, query);

    setUpSearchViewSuggestions(matrixCursor);
}

private void setUpSearchViewSuggestions(MatrixCursor cursor) {
    String[] from = new String[]{RestaurantTable.Cols.NAME};
    int[] to = new int[]{android.R.id.text1};
    android.support.v4.widget.SimpleCursorAdapter adapter = new android.support.v4.widget.SimpleCursorAdapter(
            getActivity().getBaseContext(),
            R.layout.search_view_suggestions_list_item,
            cursor,
            from,
            to,
            CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
    searchView.setSuggestionsAdapter(adapter);
}

【问题讨论】:

    标签: android searchview search-suggestion


    【解决方案1】:

    问题是软键盘处于全屏模式。所以我只使用了searchView.setImeOptions(EditorInfo.IME_FLAG_NO_FULLSCREEN)。

    【讨论】:

      猜你喜欢
      • 2016-05-29
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2016-03-15
      相关资源
      最近更新 更多