//适配器
public class SortAdapter extends BaseAdapter implements SectionIndexer {
private List<CityModel> list=null;
private Context mContext;
public SortAdapter(Context context,List<CityModel> list){
this.list=list;
this.mContext=context;
}
/*
* 当listview数据发生变化时,调用此方法更新list view
* */
public void updateListView(List<CityModel> list){
this.list=list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder=null;
final CityModel mContent=list.get(i);
if (view==null){
viewHolder=new ViewHolder();
view= LayoutInflater.from(mContext).inflate(R.layout.item_city_selector,null);
viewHolder.tvTitle= (TextView) view.findViewById(R.id.title);
viewHolder.tvLetter= (TextView) view.findViewById(R.id.catalog);
view.setTag(viewHolder);
}else {
viewHolder=(ViewHolder) view.getTag();
}
//根据position获取分类首字母的char值
int section=getSectionForPosition(i);
//如果当前位置等于=该分类首字母的位置则认为是 第一次出现
if(i==getPositionForSection(section)){
viewHolder.tvLetter.setVisibility(View.VISIBLE);
viewHolder.tvLetter.setText(mContent.getFirstName());
}else {
viewHolder.tvLetter.setVisibility(View.GONE);
}
viewHolder.tvTitle.setText(this.list.get(i).getName());
return view;
}
final static class ViewHolder {
TextView tvLetter;
TextView tvTitle;
}
/*
* 根据listview的当前您位置获取分类的首字母
* */
public int getSectionForPosition(int position){
return list.get(position).getFirstName().charAt(0);
}
/*
* 根据分类的首字母获取其第一次出现该字母的位置
* */
public int getPositionForSection(int section){
for (int i=0;i<getCount();i++){
String sortStr=list.get(i).getFirstName();
char firstChar=sortStr.toUpperCase().charAt(0);
if (firstChar == section) {
return i;
}
}
return -1;
}
/**
* 提取英文的首字母,非英文字母用#代替。
*/
private String getAlpha(String str) {
String sortStr = str.trim().substring(0, 1).toUpperCase();
// 正则表达式,判断首字母是否是英文字母
if (sortStr.matches("[A-Z]")) {
return sortStr;
} else {
return "#";
}
}
@Override
public Object[] getSections() {
return null;
}
}
//布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center_vertical"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/catalog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E0E0e0"
android:textColor="#454545"
android:layout_weight="1"
android:paddingTop="5dp"
android:paddingLeft="10dp"
android:paddingBottom="5dp"
android:text="A"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_weight="1.0"
android:textColor="#666666"
android:layout_marginLeft="10dip"
android:paddingTop="10dip"
android:background="@drawable/listview_item_change"
android:paddingBottom="10dip"/>
</LinearLayout>