在Listview的分块显示中,常常在自定义的adapter中会用到getPositionForSection
和getSectionForPosition
这两个方法,这两个方法的目的在于使Listview中的每个item布局中的显示section块的TextView显示还是隐藏,比如在联系人主界面中的相同姓氏只显示每块的第一个item中的TextView,其余的都隐藏,这就是Listview的分块显示的原理,或者说其实现方式之一吧。
假设keyEt就是该TextView,该段代码写在自定义adapter的public View getView(int position, View convertView, ViewGroup parent) 方法中:
int section=getSectionForPosition(position);
int pos=getPositionForSection(section);
if(pos==position){
keyEt.setVisibility(View.VISIBLE);
}else{
keyEt.setVisibility(View.GONE);
}
这两个方法的原理如下:
1、
getPositionForSection返回每个section的第一个元素位置,如
Position Data getSectionForPosition(position)
_________ __________ ______________________________
0 Abhfdf 0
1 Achahtkh 0
2 Ahtjlarej 0
3 Bchatkd 1
4 Bjklhdsfoi 1
5 Bzhafdlsfk 1
6 Cj fadsfkj 2
getPositionForSection(1)
returns 3getPositionForSection(2)
returns 62、
getSectionForPosition返回该position处的section的位置