項目中有一新的需求,要求能像一些Android機帶“聯系人清單”一樣,資料可以自動分組,且在清單滑動過程中,清單頭固定在頂部,效果圖如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiMyczNwATMyIjNxETM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
使用該庫,可以更加友善的實作ListView資料分組,且Header固定在頂部。
首先,把github上的項目下載下傳下來,加壓後,可看到其中有一個library庫,我們需要将該庫(Module)導入到建立的項目中,并在自己的Module引入該Library。
項目建成後,開始使用該庫進行開發:
1. 布局中引入StickyListHeadersListView:
2. 建立要顯示的資料實體
注: id是data資料的id,proj_id是該資料所屬的組的意思,proj_title是該組的名字;
3. 定義StickyListHeadersListView要顯示的擴充卡:
擴充卡是List資料顯示最重要的部分,為了實作資料分組,該擴充卡必須要實作StickyListHeadersAdapter接口,并重寫其中的getHeaderView(int position, View convertView, ViewGroup parent);和long getHeaderId(int position);方法。
說明:
getHeaderView方法指定了Header的View的顯示;
getHeaderId決定header出現的時機,如果目前的headerid和前一個headerid不同時,就會顯示。
4. 定義資料顯示的Activity:
該Activity實作了較多的方法,1. 資料顯示, 2. 清單的單機事件, 3. 清單的長按事件, 4. 資料更新等;
有個地方需要着重說明,那就是在初始化資料時,資料必須proj_id必須按分組排列,即,不要将proj_id不同的資料參差着放在集合中,否則容易造成清單顯示多組相同組名的資料。
對StickyListHeadersListView其餘的操作(點選、長按),和普通的ListView一緻,包括在xml中設定的屬性也是一緻的。
如此這般,便可實作上述的效果了!