天天看點

Android 開源庫StickyListHeadersListView來實作ListView清單分組效果

  項目中有一新的需求,要求能像一些Android機帶“聯系人清單”一樣,資料可以自動分組,且在清單滑動過程中,清單頭固定在頂部,效果圖如下:

Android 開源庫StickyListHeadersListView來實作ListView清單分組效果

使用該庫,可以更加友善的實作ListView資料分組,且Header固定在頂部。

  首先,把github上的項目下載下傳下來,加壓後,可看到其中有一個library庫,我們需要将該庫(Module)導入到建立的項目中,并在自己的Module引入該Library。

Android 開源庫StickyListHeadersListView來實作ListView清單分組效果

  項目建成後,開始使用該庫進行開發:

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中設定的屬性也是一緻的。

  如此這般,便可實作上述的效果了!

繼續閱讀