Android 快速索引(城市列表和聯絡人)

2021-08-06 04:43:13 字數 1050 閱讀 8993

原創 2023年12月25日 20:16:10

最近需要實現乙個城市列表的快速索引功能。類似於聯絡人應用,根據姓名首字母快速索引功能。

要實現這個功能只需要解決兩個問題:

1、對列表進行分組(具有同一特徵),並且能夠快速定位到該組的第一項

2、右側分組『特徵』快速索引欄的實現

第乙個問題比較好解決,列表項可以根據相同的『特徵』來分組,比如說城市列表可以根據相同首字母的城市名來進行分組。

如何來定位到分組的第一項,只需要把分組的『特徵』和分組第一項下標關聯起來,快速索引欄就能快速定位分組第一項

第二個問題可以通過自定義控制項來實現,實現的形式有很多,可以通過繪製一整張分組『特徵』的(難以擴充套件),也可以動態來繪製每乙個分組『特徵』(可擴充套件性強)

下面是一些實現的關鍵**,基本上就是上面思想的體現,如果自己有特殊的需求話,稍做改動就能行

列表『特徵』和分組首項進行關聯

for (int i = 0; i < mcitys.size(); i++) 

}

快速索引的繪製

@override

protected void ondraw(canvas canvas)

super.ondraw(canvas);

}

使用者互動,快速定位到索引項

public boolean ontouchevent(motionevent event)  else if (index < 0) 

if (event.getaction() == motionevent.action_down || event.getaction() == motionevent.action_move)

mlistview.setselection(position);

}return true;

}

效果圖如下:

原始碼:

城市列表資料

export const citylistdata async element 26字母 codelist.foreach element promise.resolve 是乙個promise 封裝過 成功後帶出的資料 可以配合async await 使用 在async和await 的肚子中使用也可...

列表排序並返回索引 ghpython 快速排序

今天咱們來用ghpython學習另一種列表排序演算法,快速排序。快速排序,看其名稱就顯得簡單粗暴,就講究乙個快字。快速排序也是一種利用分治法來實現對列表進行排序的演算法。今天分享了三種思路,其中有一種是來自老潘的微博,個人感覺還是老潘的思路更加淺顯易懂。快速排序 下邊的 具體的實現形式 以列表第乙個...

五線城市列表

晉江 福建經濟發達縣級市 增城 廣東經濟發達縣級市 諸暨 浙江經濟發達縣級市 丹陽 江蘇經濟發達縣級市 玉環 浙江經濟發達縣 常熟 江蘇經濟發達縣級市 崇明 上海經濟發達縣 餘姚 浙江經濟發達縣級市 奉化 浙江經濟發達縣級市 海寧 浙江經濟發達縣級市 瀏陽市湖南縣級市 大理 雲南縣級市 州府 麗江 ...