package net.cgt.weixin.view.adapter;

import java.util.List;

import net.cgt.weixin.R;
import net.cgt.weixin.domain.User;
import net.cgt.weixin.utils.StringMatcherUtils;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.SectionIndexer;
import android.widget.TextView;

/**
 * 通讯录适配器
 * 
 * @author lijian-pc
 * @date 2014-11-26
 */
public class AddressBookAdapter extends BaseAdapter implements SectionIndexer {

	private String mSections = "↑☆ABCDEFGHIJKLMNOPQRSTUVWXYZ#";
	
	private Context mContext;
	private List<User> mList;

	public AddressBookAdapter(Context context, List<User> list) {
		this.mContext = context;
		this.mList = list;
	}

	@Override
	public int getCount() {
		if (mList == null) {
			return 0;
		} else {
			return mList.size();
		}
	}

	@Override
	public Object getItem(int position) {
		if (mList == null) {
			return null;
		} else {
			return mList.get(position);
		}
	}

	@Override
	public long getItemId(int position) {
		if (mList == null) {
			return 0;
		} else {
			return position;
		}
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder holder = null;
		if (convertView != null) {
			holder = (ViewHolder) convertView.getTag();
		} else {
			convertView = View.inflate(mContext, R.layout.cgt_layout_addressbook_item, null);
			holder = new ViewHolder();
			holder.userPhoto = (ImageView) convertView.findViewById(R.id.cgt_iv_userPhoto);
			holder.userName = (TextView) convertView.findViewById(R.id.cgt_tv_userName);
			convertView.setTag(holder);
		}
		
//		holder.userPhoto.setImageResource(Integer.parseInt(mList.get(position).getUserPhote()));
		holder.userPhoto.setImageResource(R.drawable.icon);
		holder.userName.setText(mList.get(position).getUserAccount());
		return convertView;
	}

	class ViewHolder {
		/** 用户头像 **/
		ImageView userPhoto;
		/** 用户名 **/
		TextView userName;
	}

	@Override
	public Object[] getSections() {
		String[] sections = new String[mSections.length()];
		for (int i = 0; i < mSections.length(); i++){
			sections[i] = String.valueOf(mSections.charAt(i));
		}
		return sections;
	}

	@Override
	public int getPositionForSection(int section) {
		// 如果当前部分没有item,则之前的部分将被选择
		for (int i = section; i >= 0; i--) {
			for (int j = 0; j < getCount(); j++) {
				if (i == 0) {
					// 数字部分
					for (int k = 0; k <= 9; k++) {// 1...9
						// 字符串第一个字符与1~9之间的数字进行匹配
						if (StringMatcherUtils.match(String.valueOf(((User)getItem(j)).getUserAccount().charAt(0)), String.valueOf(k)))
							return j;
					}
				} else {// A~Z
					if (StringMatcherUtils.match(String.valueOf(((User)getItem(j)).getUserAccount().charAt(0)), String.valueOf(mSections.charAt(i))))
						return j;
				}
			}
		}
		return 0;
	}

	@Override
	public int getSectionForPosition(int position) {
		return 0;
	}
}