// Path: Contacts_1.1.0/src/com/night/contact/util/PinyinUtils.java
// public class PinyinUtils {
// 	/**
// 	 * ½«×Ö·û´®ÖÐµÄÖÐÎÄ×ª»¯ÎªÆ´Òô,ÆäËû×Ö·û²»±ä
// 	 * @param inputString
// 	 * @return
// 	 */
// 	public static String getPingYin(String inputString) {
// 		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// 		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// 		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// 		format.setVCharType(HanyuPinyinVCharType.WITH_V);
// 
// 		char[] input = inputString.trim().toCharArray();
// 		String output = "";
// 
// 		try {
// 			for (char curchar : input) {
// 				if (java.lang.Character.toString(curchar).matches(
// 						"[\\u4E00-\\u9FA5]+")) {
// 					String[] temp = PinyinHelper.toHanyuPinyinStringArray(
// 							curchar, format);
// 					output += temp[0];
// 				} else
// 					output += java.lang.Character.toString(curchar);
// 			}
// 		} catch (BadHanyuPinyinOutputFormatCombination e) {
// 			e.printStackTrace();
// 		}
// 		return output;
// 	}
// 
// 	/**
// 	 * ºº×Ö×ª»»ÎªººÓïÆ´ÒôÊ××ÖÄ¸£¬Ó¢ÎÄ×Ö·û²»±ä
// 	 * »¨»¨´óÉñ->hhds
// 	 * @param chines
// 	 *            ºº×Ö
// 	 * @return Æ´Òô
// 	 */
// 	public static String getFirstSpell(String chinese) {  
// 	            StringBuffer pybf = new StringBuffer();  
// 	            char[] arr = chinese.toCharArray();  
// 	            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();  
// 	            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
// 	            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
// 	            for (char curchar : arr) {  
//                     if (curchar > 128) {  
//                             try {  
//                                     String[] temp = PinyinHelper.toHanyuPinyinStringArray(curchar, defaultFormat);  
//                                     if (temp != null) {  
//                                             pybf.append(temp[0].charAt(0));  
//                                     }  
//                             } catch (BadHanyuPinyinOutputFormatCombination e) {  
//                                     e.printStackTrace();  
//                             }  
//                     } else {  
//                             pybf.append(curchar);  
//                     }  
//             }  
// 	            return pybf.toString().replaceAll("\\W", "").trim();  
// 	    } 
//     
// 	public static String getPingYin1(String input){
// 		ArrayList<Token> tokens = HanziToPinyin.getInstance().get(input);
// 		StringBuilder sb = new StringBuilder();
// 		if(tokens != null && tokens.size() >0){
// 			for(Token token : tokens){
// 				if(Token.PINYIN == token.type){
// 					sb.append(token.target);
// 				}
// 				else{
// 					sb.append(token.source);
// 				}
// 			}
// 		}
// 		return sb.toString().toLowerCase();
// 	}
// }


import java.io.InputStream;
import android.annotation.SuppressLint;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.RawContacts.Data;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.night.contact.ui.R;
import com.night.contact.util.PinyinUtils;
	@Override
	public void bindView(View view, Context context, Cursor cursor) {
		if(cursor == null)
		{
			return;
		}
        TextView name = (TextView) view.findViewById(R.id.contacts_name);
        name.setText(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));
	    
        ImageView photo = (ImageView) view.findViewById(R.id.contact_photo);
        
        int photoId = cursor.getInt
        		(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_ID));
        String contactID = cursor.getString(cursor
				.getColumnIndex(Data.RAW_CONTACT_ID));
        if(0 == photoId){
        	photo.setImageResource(R.drawable.default_contact_photo);
        }else{
        	Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,Integer.parseInt(contactID));
			InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri); 
			Bitmap contactPhoto = BitmapFactory.decodeStream(input);
			photo.setImageBitmap(contactPhoto);
        }
        
        ImageView chooseView = (ImageView)view.findViewById(R.id.choose_contact);
        chooseView.setVisibility(View.GONE);
        
		//×ÖÄ¸ÌáÊ¾textviewµÄÏÔÊ¾ 
		TextView letterTag = (TextView)view.findViewById(R.id.pb_item_LetterTag);
		//»ñµÃµ±Ç°ÐÕÃûµÄÆ´ÒôÊ××ÖÄ¸
// Path: Contacts_1.1.0/src/com/night/contact/util/PinyinUtils.java
// public class PinyinUtils {
// 	/**
// 	 * ½«×Ö·û´®ÖÐµÄÖÐÎÄ×ª»¯ÎªÆ´Òô,ÆäËû×Ö·û²»±ä
// 	 * @param inputString
// 	 * @return
// 	 */
// 	public static String getPingYin(String inputString) {
// 		HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// 		format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// 		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// 		format.setVCharType(HanyuPinyinVCharType.WITH_V);
// 
// 		char[] input = inputString.trim().toCharArray();
// 		String output = "";
// 
// 		try {
// 			for (char curchar : input) {
// 				if (java.lang.Character.toString(curchar).matches(
// 						"[\\u4E00-\\u9FA5]+")) {
// 					String[] temp = PinyinHelper.toHanyuPinyinStringArray(
// 							curchar, format);
// 					output += temp[0];
// 				} else
// 					output += java.lang.Character.toString(curchar);
// 			}
// 		} catch (BadHanyuPinyinOutputFormatCombination e) {
// 			e.printStackTrace();
// 		}
// 		return output;
// 	}
// 
// 	/**
// 	 * ºº×Ö×ª»»ÎªººÓïÆ´ÒôÊ××ÖÄ¸£¬Ó¢ÎÄ×Ö·û²»±ä
// 	 * »¨»¨´óÉñ->hhds
// 	 * @param chines
// 	 *            ºº×Ö
// 	 * @return Æ´Òô
// 	 */
// 	public static String getFirstSpell(String chinese) {  
// 	            StringBuffer pybf = new StringBuffer();  
// 	            char[] arr = chinese.toCharArray();  
// 	            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();  
// 	            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
// 	            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);  
// 	            for (char curchar : arr) {  
//                     if (curchar > 128) {  
//                             try {  
//                                     String[] temp = PinyinHelper.toHanyuPinyinStringArray(curchar, defaultFormat);  
//                                     if (temp != null) {  
//                                             pybf.append(temp[0].charAt(0));  
//                                     }  
//                             } catch (BadHanyuPinyinOutputFormatCombination e) {  
//                                     e.printStackTrace();  
//                             }  
//                     } else {  
//                             pybf.append(curchar);  
//                     }  
//             }  
// 	            return pybf.toString().replaceAll("\\W", "").trim();  
// 	    } 
//     
// 	public static String getPingYin1(String input){
// 		ArrayList<Token> tokens = HanziToPinyin.getInstance().get(input);
// 		StringBuilder sb = new StringBuilder();
// 		if(tokens != null && tokens.size() >0){
// 			for(Token token : tokens){
// 				if(Token.PINYIN == token.type){
// 					sb.append(token.target);
// 				}
// 				else{
// 					sb.append(token.source);
// 				}
// 			}
// 		}
// 		return sb.toString().toLowerCase();
// 	}
// }


// Path: Contacts_1.1.0/src/com/night/contact/contact/ContactsCursorAdapter.java
import java.io.InputStream;
import android.annotation.SuppressLint;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.RawContacts.Data;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.night.contact.ui.R;
import com.night.contact.util.PinyinUtils;

	@Override
	public void bindView(View view, Context context, Cursor cursor) {
		if(cursor == null)
		{
			return;
		}
        TextView name = (TextView) view.findViewById(R.id.contacts_name);
        name.setText(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));
	    
        ImageView photo = (ImageView) view.findViewById(R.id.contact_photo);
        
        int photoId = cursor.getInt
        		(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_ID));
        String contactID = cursor.getString(cursor
				.getColumnIndex(Data.RAW_CONTACT_ID));
        if(0 == photoId){
        	photo.setImageResource(R.drawable.default_contact_photo);
        }else{
        	Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,Integer.parseInt(contactID));
			InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri); 
			Bitmap contactPhoto = BitmapFactory.decodeStream(input);
			photo.setImageBitmap(contactPhoto);
        }
        
        ImageView chooseView = (ImageView)view.findViewById(R.id.choose_contact);
        chooseView.setVisibility(View.GONE);
        
		//×ÖÄ¸ÌáÊ¾textviewµÄÏÔÊ¾ 
		TextView letterTag = (TextView)view.findViewById(R.id.pb_item_LetterTag);
		//»ñµÃµ±Ç°ÐÕÃûµÄÆ´ÒôÊ××ÖÄ¸
		String firstLetter = PinyinUtils.getPingYin(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))).substring(0,1).toUpperCase();