看圖
拿到這樣的需求該怎麼做(抱歉,圖片太渣了)
按字母的排序item的首字母;
分析一下,有兩種類型的佈局,
有人說Baseadapter的getItemViewType和getViewTypeCount,nono這樣排序有點麻煩,
我們可以當成一種佈局,字母部分可以隱藏和顯示!我們需要把item的第一個字轉化成拼音,獲取首字母
加入集合,通過 Collections.sort(,)排序;最後setAdapter
然後就是處理Adapter裏面的事。首先要實現一個接口SectionIndexer,重寫相應的方法, public int getPositionForSection(int sectionIndex) 和 public int getSectionForPosition(int position)
還有public Object[] getSections() { return new Object[0]; };從方法名就知道是什麼作用,然後在getView裏面對獲取的view進行處理,代碼:
//根據position獲取分類的首字母的Char ascii值
int section = getSectionForPosition(position);
//如果當前位置等於該分類首字母的Char的位置 ,則認爲是第一次出現
if(position == getPositionForSection(section)){
viewHolder.title.setVisibility(View.VISIBLE);
viewHolder.title.setText(mContent.getSortLetters());
}else{
viewHolder.title.setVisibility(View.GONE);
}