2014-12-27 75 views
0

我有一個SearchViewActionBar和我使用onQueryTextListener與它。我在ActionBar所屬的活動佈局中有一個列表視圖。在ListView中有兩個Textviews。因此,當用戶在searchview中輸入文本時,會在文本上執行Web查詢(api),並使用收到的結果(數組)來填充列表視圖。就像AutoCompleteTextView,而是在列表視圖中顯示結果。如何自發更新Listview?

我使用的是HandlerThread執行此查詢並填充ListView和我已經在onQueryTextChange這是工作付諸實施。

但問題是,顯示結果需要很長時間。在用戶輸入輸入後顯示結果。但是,我希望結果以用戶輸入文本的方式顯示(如Google建議的那樣)。我怎樣才能做到這一點?

+0

不,不,不使用任何HandlerThread,請參閱篩選器類和可篩選界面 – pskink 2014-12-27 13:41:03

+0

請參閱我的答案在這裏:http://stackoverflow.com/questions/19858843/how-to-dynamically-add-suggestions-to- autocompletetextview-with-preserving-chara知道如何用CursorAdapter輕鬆實現過濾 – pskink 2014-12-27 13:46:26

+0

@pskink在這種情況下,HandlerThreads可以被使用以及爲什麼HandlerThreads不是一個好主意? – 2014-12-27 18:04:21

回答

0

我想象谷歌在他們的服務器上使用緩存結果,以加快對查詢的響應速度。你可以使用像MemCache或Varnish這樣的東西來提供更快的結果。如果結果需要搜索,您還可以通過使用像Apache Solr或Lucene這樣的搜索引擎來提高速度。

谷歌還將擁有非常優秀的服務器基礎架構,緩存結果位於全球各地,因此總是靠近用戶。結果可能會有所不同,從服務器到服務器,以便他們給本地用戶所需。我記得計算幾年前,基於試圖提高在線遊戲的響應時間,歐洲是北美十分之一秒。

您也可以僞造此信息。您可以下載預計用戶希望訪問其設備的結果,並從設備上的數據庫中填充自動填充。請求也可以同時發送到服務器,並且一旦從服務器收到響應,自動完成結果就會更新。這在一定程度上取決於您所搜索內容的複雜程度。如果只有有限數量的結果,您可以輕鬆將它們全部存儲在設備上。