Android Open Source - guides Search View Guides

From Project

Back to project page guides.


The source code is released under:

GNU General Public License

If you think the Android project guides listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

//        Guidebook is an Android application that reads audioguides using Text-to-Speech services.
//        Copyright (C) 2013  Adrin Romero Corchado
///*from   w w  w  . j a v  a2s .co m*/
//        This program is free software: you can redistribute it and/or modify
//        it under the terms of the GNU General Public License as published by
//        the Free Software Foundation, either version 3 of the License, or
//        (at your option) any later version.
//        This program is distributed in the hope that it will be useful,
//        but WITHOUT ANY WARRANTY; without even the implied warranty of
//        GNU General Public License for more details.
//        You should have received a copy of the GNU General Public License
//        along with this program.  If not, see <>.

package com.adrguides;

import android.database.Cursor;
import android.database.MatrixCursor;
import android.util.Log;
import android.view.MenuItem;
import android.widget.FilterQueryProvider;
import android.widget.SearchView;
import android.widget.SimpleCursorAdapter;

import com.adrguides.model.Place;

import java.util.List;

 * Created by adrian on 29/08/13.
public class SearchViewGuides {

    private TTSFragment ttsFragment;

    public SearchViewGuides(final Activity activity, final MenuItem menuitem) {

        ttsFragment = (TTSFragment) activity.getFragmentManager().findFragmentByTag(TTSFragment.TAG);

        final SearchView searchView = (SearchView) menuitem.getActionView();
        // Configure the search info and add any event listeners

        menuitem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
            public boolean onMenuItemActionExpand(MenuItem menuItem) {
                String[] from = {"text"};
                int[] to = {};

                SimpleCursorAdapter adapter = new SimpleCursorAdapter(activity.getActionBar().getThemedContext(), android.R.layout.simple_list_item_activated_1, getSuggestionsCursor(null), from, to, 0);
                adapter.setFilterQueryProvider(new FilterQueryProvider() {
                    public Cursor runQuery(CharSequence constraint) {
                        if (constraint == null) {
                            return null;
                        } else {
                            return getSuggestionsCursor(constraint.toString());
                return true;

            public boolean onMenuItemActionCollapse(MenuItem menuItem) {
                return true;

        searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
            public boolean onSuggestionSelect(int i) {
                return false;

            public boolean onSuggestionClick(int i) {
                Cursor row = (Cursor) searchView.getSuggestionsAdapter().getItem(i);
                searchView.setQuery(row.getString(2), true);
                return true;

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            public boolean onQueryTextSubmit(String s) {

                if (s == null) {
                    return false;

                List<Place> places = ttsFragment.getGuide().getPlaces();
                for(int i = 0; i < places.size(); i++){
                    Place item = places.get(i);
                    if ((item.getId() != null && item.getId().equals(s)) ||
                            item.getTitle().toLowerCase().equals(s.toLowerCase()) ||
                            item.getVisibleLabel().toLowerCase().equals(s.toLowerCase())) {

                        return true;
                return false ;// true if the query has been handled by the listener, false to let the SearchView perform the default action.
            public boolean onQueryTextChange(String s) {
                return false; // false if the SearchView should perform the default action of showing any suggestions if available, true if the action was handled by the listener.

    private Cursor getSuggestionsCursor(String filter) {

        String[] columnNames = {"_id", "_title", "text"};
        MatrixCursor cursor = new MatrixCursor(columnNames);
        String[] temp = new String[3];
        int id = 0;
        for(Place item : ttsFragment.getGuide().getPlaces()){

            if (filter == null ||
                    (item.getId() != null && item.getId().contains(filter)) ||
                    item.getTitle().toLowerCase().contains(filter.toLowerCase())) {
                temp[0] = item.getId();
                temp[1] = item.getTitle();
                temp[2] = item.getVisibleLabel();

        return cursor;

Java Source Code List