" />
這是仿QQ好友列表分組懸浮PinnedHeaderExpandableListView下載,關(guān)于實(shí)現(xiàn)類似聯(lián)系人列表,組的頭部總是懸浮在listview最頂部的效果,github上面有兩個比較好的實(shí)現(xiàn),分別是pinnedSectionListview和pinnedHeaderListView,之所以選擇后者進(jìn)行源碼解析,是因為后者的源碼比較簡單,便于我們理解實(shí)現(xiàn)的精髓所在。
首先說說上一節(jié)通訊錄原型實(shí)現(xiàn)(-)中的RightLettersSlideBar中設(shè)計不好的地方,在上一節(jié),我們將26個大寫字母和#作為字符數(shù)組,這樣會導(dǎo)致一種情況就是,加入我們的Listview的數(shù)據(jù)中不存在以“O”開頭的字符集,我們的Adapter里面沒有做相應(yīng)的判斷,就會出現(xiàn)很嚴(yán)重的錯誤,導(dǎo)致程序崩潰。有兩種解決方案可以解決這個問題,第一就是將每一個字符做相應(yīng)的判斷,沒有對應(yīng)的數(shù)據(jù)的時候顯示上一Section或者下一個Section的數(shù)據(jù)。第二種做法是,動態(tài)生成我們的原始導(dǎo)航數(shù)據(jù)的數(shù)組,意思就是將我們所有的數(shù)據(jù)的首字母提取出來,按順序排列,那么沒有數(shù)據(jù)的對應(yīng)部分的首字母不會出現(xiàn)在我們的原始字符數(shù)組里面,在此我們選擇這種做法。將RightLettersSlideBar中的charaters數(shù)組動態(tài)傳入,采用set,get方法讀寫數(shù)據(jù)。這里就不詳細(xì)再將,文章寫完之后會將代碼貼在后面。里面的注釋也非常詳細(xì),有需要的可以下載看看。
仿QQ好友列表分組懸浮PinnedHeaderExpandableListView只能顯示一級列表,如果我們需要像QQ好友列表的那樣的效果,就需要用到ExpandableListView,入門新手可能對該控件不是很熟悉,下面就詳解一下基本用法,其實(shí)跟ListView差不多,下面來說一下具體的使用方法把!
之前學(xué)習(xí)了Pulltorefresh,pinnedheaderexpanablelistview 但是結(jié)合起來還是有點(diǎn)麻煩的。尤其是像QQ這種。他不是單純的第一個當(dāng)做分組。他是分組上面還有幾個按鈕,還有搜索框,同時可以滑動,而且還可以懸停。想了試了好幾種方法,都有BUG。最后用的一種方法。