1185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert/* 2185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Copyright (C) 2009 The Android Open Source Project 3185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * 4185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 5185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * you may not use this file except in compliance with the License. 6185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * You may obtain a copy of the License at 7185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * 8185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 9185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * 10185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Unless required by applicable law or agreed to in writing, software 11185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 12185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * See the License for the specific language governing permissions and 14185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * limitations under the License. 15185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert */ 16185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert 17185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertpackage com.android.quicksearchbox.ui; 18185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert 19185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.content.Context; 20185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.util.AttributeSet; 21aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwoodimport android.widget.ListAdapter; 22713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringertimport android.widget.ListView; 23185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert 24ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwoodimport com.android.quicksearchbox.SuggestionPosition; 25ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood 26185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert/** 27713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert * Holds a list of suggestions. 28185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert */ 29fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwoodpublic class SuggestionsView extends ListView implements SuggestionsListView<ListAdapter> { 30185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert 31b5fc08b7f16a32d3865f44b7f26d8aaa5304a2adBjorn Bringert private static final boolean DBG = false; 32185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert private static final String TAG = "QSB.SuggestionsView"; 33185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert 34fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood private SuggestionsAdapter<ListAdapter> mSuggestionsAdapter; 35fdb80c2962c88ac62dcd7ee7f2fab1857b61506bMathew Inwood 36185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert public SuggestionsView(Context context, AttributeSet attrs) { 37185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert super(context, attrs); 38185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert } 39185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert 40ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood @Override 41fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood public void setSuggestionsAdapter(SuggestionsAdapter<ListAdapter> adapter) { 42fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood super.setAdapter(adapter == null ? null : adapter.getListAdapter()); 43fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood mSuggestionsAdapter = adapter; 44aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood } 45aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood 46ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood @Override 47fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood public SuggestionsAdapter<ListAdapter> getSuggestionsAdapter() { 48fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood return mSuggestionsAdapter; 49aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood } 50aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood 51aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood @Override 52713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert public void onFinishInflate() { 53713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert super.onFinishInflate(); 5466ee1cc883f77fee930587503ecdcd8d18f12b23Mathew Inwood setItemsCanFocus(true); 55185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert } 56185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert 57782dd228e78e9294692d639597f96c26283968bbBjorn Bringert /** 58713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert * Gets the position of the selected suggestion. 59782dd228e78e9294692d639597f96c26283968bbBjorn Bringert * 60782dd228e78e9294692d639597f96c26283968bbBjorn Bringert * @return A 0-based index, or {@code -1} if no suggestion is selected. 61782dd228e78e9294692d639597f96c26283968bbBjorn Bringert */ 62782dd228e78e9294692d639597f96c26283968bbBjorn Bringert public int getSelectedPosition() { 63713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert return getSelectedItemPosition(); 64782dd228e78e9294692d639597f96c26283968bbBjorn Bringert } 65782dd228e78e9294692d639597f96c26283968bbBjorn Bringert 66782dd228e78e9294692d639597f96c26283968bbBjorn Bringert /** 67713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert * Gets the selected suggestion. 68782dd228e78e9294692d639597f96c26283968bbBjorn Bringert * 69782dd228e78e9294692d639597f96c26283968bbBjorn Bringert * @return {@code null} if no suggestion is selected. 70782dd228e78e9294692d639597f96c26283968bbBjorn Bringert */ 71782dd228e78e9294692d639597f96c26283968bbBjorn Bringert public SuggestionPosition getSelectedSuggestion() { 72713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert return (SuggestionPosition) getSelectedItem(); 73782dd228e78e9294692d639597f96c26283968bbBjorn Bringert } 74782dd228e78e9294692d639597f96c26283968bbBjorn Bringert 75fdb80c2962c88ac62dcd7ee7f2fab1857b61506bMathew Inwood 76185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert} 77