package com.zsj.list_demo; import java.util.List; import android.annotation.SuppressLint; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.SectionIndexer; import android.widget.TextView; /** �����б� * @ClassName: UserFriendAdapter * @Description: TODO * @author smile * @date 2014-6-12 ����3:03:40 */ @SuppressLint("DefaultLocale") public class UserFriendAdapter extends BaseAdapter implements SectionIndexer { private Context ct; private List<User> data; public UserFriendAdapter(Context ct, List<User> datas) { this.ct = ct; this.data = datas; } /** ��ListView���ݷ����仯ʱ,���ô˷���������ListView * @Title: updateListView * @Description: TODO * @param @param list * @return void * @throws */ public void updateListView(List<User> list) { this.data = list; notifyDataSetChanged(); } public void remove(User user){ this.data.remove(user); notifyDataSetChanged(); } @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { convertView = LayoutInflater.from(ct).inflate( R.layout.item_user_friend, null); viewHolder = new ViewHolder(); viewHolder.alpha = (TextView) convertView.findViewById(R.id.alpha); viewHolder.name = (TextView) convertView .findViewById(R.id.tv_friend_name); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } User friend = data.get(position); final String name = friend.getUserName(); viewHolder.name.setText(name); // ����position��ȡ���������ĸ��Char asciiֵ int section = getSectionForPosition(position); // �����ǰλ�õ��ڸ÷�������ĸ��Char��λ�� ������Ϊ�ǵ�һ�γ��� if (position == getPositionForSection(section)) { viewHolder.alpha.setVisibility(View.VISIBLE); viewHolder.alpha.setText(friend.getSortLetters()); } else { viewHolder.alpha.setVisibility(View.GONE); } return convertView; } static class ViewHolder { TextView alpha;// ����ĸ��ʾ TextView name; } /** * ����ListView�ĵ�ǰλ�û�ȡ���������ĸ��Char asciiֵ */ public int getSectionForPosition(int position) { return data.get(position).getSortLetters().charAt(0); } /** * ���ݷ��������ĸ��Char asciiֵ��ȡ���һ�γ��ָ�����ĸ��λ�� */ @SuppressLint("DefaultLocale") public int getPositionForSection(int section) { for (int i = 0; i < getCount(); i++) { String sortStr = data.get(i).getSortLetters(); char firstChar = sortStr.toUpperCase().charAt(0); if (firstChar == section){ return i; } } return -1; } @Override public Object[] getSections() { return null; } }