遊標ListView,提供索引標籤,使使用者能夠快速定位清單項目。
也可以叫索引ListView,有的人稱也為Tweaked ListView,可能更形象些吧。
一看圖啥都懂了:<ignore_js_op>1.遊標(Fast scroll thumb)
就是右邊的那個拖動的方塊,這個非常的簡單:複製代碼
也可以用在java後台書寫:
複製代碼
在資料量有一定大的時候,滑動列表,就會出現右邊的所謂的"遊標"了。
簡單,這也是我為什麼私下裡喜歡自己寫控制項,但是工作中卻喜歡用通用控制項。
我們看下原始碼,其實就是啟用FastScroller對象:
複製代碼
2.字母索引
在Android學習系列(10)--App列表之拖拽ListView(上)中我們使用了一種WindowManager在ListView中添加一些自訂影像,這種方法我覺得一定是可行的。
但是,android系統給我們提供了一個更簡單的方法:使用AlphabetIndexer。
AlphabetIndexer,實現了SectionIndexer介面,是adapter的一個輔助類,輔助實現在快滑時,顯示索引字母。
使用字母索引的話,必須保證資料列表是按字母順序排序,以便AlphabetIndexerh採用二分尋找法快速定位。
複製代碼
用到3個方法:
複製代碼
3.遊標Cursor的實現
Cursor介面的實現,有兩種選擇:
(1).直接使用資料庫查詢返回的cursor
(2).自訂實現Cursor介面的新類
第一種方式很簡單,查詢一下資料庫返回Cursor即可。
這裡我們以第二種方式實踐,偽裝一個Cursor,主要是實現3個方法:
(1).getCount()
(2). moveToPosition()
(3). getString()
複製代碼 這個類的執行個體就可作為AlphaIndexer的建構函式第一個參數資料遊標。4.自訂Adapter的實現
使用前面介紹的東西,我們來實現最終的IndexAdapter:
複製代碼
5.跑起來
提供樣本資料如下:
複製代碼
子項的布局檔案:
複製代碼
使用並運行:
複製代碼效果如下:<ignore_js_op>
這種索引效果,在大資料量列表顯示中非常的實用,是Android開發必備常識。
本文只是一個簡單的sample,實際工作中肯定會需要進一步擴充定義:
(3).對於複雜介面的顯示,可重寫adapter的getView方法自訂視圖。