2013-01-08 19 views
4

我在數據庫中有5000個名字。我希望所有這些名字都能夠被誇大到一個ListView上。它具有以下要素何時使用延遲加載和何時不使用。?

  1. 圖標圖像(這是存儲在本地可繪)
  2. 名稱
  3. 在公里距離

我過濾使用搜索過濾,像這樣這樣的ListView:

adapter.getFilter().filter(someText); 

我也在排序listview,例如:按字母順序排序listView名稱( A-Z和Z-A)。 排序的ListView的適配器上做過這樣的:

adapter.sort(new Comparator<String>() { 

       @Override 
       public int compare(String lhs, String rhs) { 
        return lhs.getPlaceName().compareTo(rhs.getPlaceName()); 
       }; 
      }); 

現在我感到很困惑是否使用名字的延遲加載到列表視圖(因爲我有5000+名)考慮到適配器的性能。請建議。

+4

因爲它是一個數據庫無論如何,使用光標?據我所知,這本身就是延遲加載。 – NickL

+1

在這種情況下推薦分頁(例如Play商店應用)。惰性加載第一個100左右,並提供_load下一個100_或_load先前的100_行動(可能是當用戶滾動到頂部或結束)。推遲過濾到您的查詢。 –

+0

@NickL我正在使用storm:開放源代碼的ORM爲Android上的SQLite通過David M Chandler,它將自動化我的數據庫事務,我所懇求的是隻有數據訪問對象。我(我只能做插入,刪除,更新在上面)。我不確定我是否可以使用光標。 –

回答

2

或者,您可以將數據存儲在數據庫中,然後應用延遲加載。 由於儘管@Singularity建議的方法非常好,您可能最終只會對數據塊進行排序[100],而不是整個數據。另外,您需要對每個塊進行排序。

+0

我真正需要的是,無論我是在執行搜索還是排序,它都應該一次申請所有5000+項。如果我做延遲加載,我可以做到這一點。? –

+0

同時將已排序的數據存儲到數據庫並將其恢復可能是我猜測的線程中的一項巨大工作。 –

+1

嗨Suresh,懶加載意味着加載項目,並在需要時。所以我認爲,如果你想要對所有5000進行排序,那麼這不會解決你的目的。另外,根據你的任何問題,我假設你有一個靜態數據庫,它不是在運行時建立的。因此,提前對它進行分類的建議。如果你沒有在運行時向你的數據庫添加項目,那麼你可以事先對你的表進行排序,然後你可以利用@Singularity建議的分頁。讓我知道這是否有幫助。 – HarshalK

相關問題