androidjsonnetwork-programmingquick-search

Search suggestions from network resource into Quick Search box


I'm building the search in an application and need to have a way of putting the suggestions which I get from my server as a JSON-array into the list of suggestions which is displayed below the Quick Search Box.

Is there an easy way to have the quick search box read such resources?

Currently I am trying to use a ContentProvider, but the interface methods clearly indicate one is supposed to be querying a database to get the suggestions. I guess using a ContentProvider is the correct way if you are searching the data which is stored inside the application. I am not so sure however, that it is the right way if you need to query a network resource.

It makes no sense for me to save the suggestions I get from the network to a local database, as the suggestions and their hit rate will vary from time to time.

Anyone had this issue? Or can point me in the direction of a similar question? I could not find questions here on stack that mentioned network suggestions.


Solution

  • Found the solution on developer.android.com:

    If you have suggestions that you get from a network location, you can build a cursor on the fly when you get the results from your server.

    This goes inside your ContentProvider's query() method:

    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;
    

    The cursor is the used in the quick-search box to fill a list of suggestions.