diff options
author | Chulwoo Lee <chulwoo@google.com> | 2014-06-07 18:44:19 +0900 |
---|---|---|
committer | Chulwoo Lee <chulwoo@google.com> | 2014-06-09 10:49:33 +0900 |
commit | a4e80f54bf945b6601982ee2a74f44fa3f132889 (patch) | |
tree | 0cd35c4419b0cdb59e7292a26b9acf80ce9453a7 /src/com/android/tv/search/TvProviderSearch.java | |
parent | a676c4113118e0c662a72c84de944384c569f032 (diff) | |
download | TV-a4e80f54bf945b6601982ee2a74f44fa3f132889.tar.gz |
Apply query limit in local search
Change-Id: I71e5a53462aa27fe1d9f996f4b5d1bf0d9bfab31
Diffstat (limited to 'src/com/android/tv/search/TvProviderSearch.java')
-rw-r--r-- | src/com/android/tv/search/TvProviderSearch.java | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/com/android/tv/search/TvProviderSearch.java b/src/com/android/tv/search/TvProviderSearch.java index 718de28c..0027dac2 100644 --- a/src/com/android/tv/search/TvProviderSearch.java +++ b/src/com/android/tv/search/TvProviderSearch.java @@ -28,43 +28,50 @@ import java.util.ArrayList; import java.util.List; public class TvProviderSearch { - public static List<SearchResult> search(Context context, String query) { + public static List<SearchResult> search(Context context, String query, int limit) { List<SearchResult> results = new ArrayList<SearchResult>(); results.addAll(searchChannels(context, query, new String[] { Channels.COLUMN_DISPLAY_NAME, Channels.COLUMN_DESCRIPTION - })); + }, limit)); + if (results.size() >= limit) { + return results; + } + + limit -= results.size(); results.addAll(searchPrograms(context, query, new String[] { Programs.COLUMN_TITLE, Programs.COLUMN_SHORT_DESCRIPTION - })); + }, limit)); return results; } private static List<SearchResult> searchChannels(Context context, String query, - String[] columnNames) { + String[] columnNames, int limit) { String[] projection = { Channels._ID, Channels.COLUMN_DISPLAY_NAME, Channels.COLUMN_DESCRIPTION, }; - return search(context, Channels.CONTENT_URI, projection, query, columnNames); + + return search(context, Channels.CONTENT_URI, projection, query, columnNames, limit); } // TODO: Consider the case when the searched programs are already ended or the user select a // searched program which doesn't air right now. private static List<SearchResult> searchPrograms(Context context, String query, - String[] columnNames) { + String[] columnNames, final int limit) { String[] projection = { Programs.COLUMN_CHANNEL_ID, Programs.COLUMN_TITLE, Programs.COLUMN_SHORT_DESCRIPTION, }; - return search(context, Programs.CONTENT_URI, projection, query, columnNames); + + return search(context, Programs.CONTENT_URI, projection, query, columnNames, limit); } private static List<SearchResult> search(Context context, Uri uri, String[] projection, - String query, String[] columnNames) { + String query, String[] columnNames, int limit) { List<SearchResult> results = new ArrayList<SearchResult>(); StringBuilder sb = new StringBuilder("1=0"); @@ -84,8 +91,9 @@ public class TvProviderSearch { null); if (cursor != null) { // TODO: Need to add image when available. + int count = 0; while (cursor.moveToNext()) { - int id = cursor.getInt(0); + long id = cursor.getLong(0); String title = cursor.getString(1); String description = cursor.getString(2); @@ -97,6 +105,10 @@ public class TvProviderSearch { .toString()) .build(); results.add(result); + + if (++count >= limit) { + break; + } } } } finally { |