package com.talk.demo.share; import android.app.Activity; import android.content.AsyncQueryHandler; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.talk.demo.R; import com.talk.demo.ui.QuickAlphabeticBar; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FriendsActivity extends Activity { private static String TAG = "FriendsActivity"; private ContactListAdapter adapter; private ListView contactList; private List<ContactBean> list; private AsyncQueryHandler asyncQueryHandler; private QuickAlphabeticBar alphabeticBar; private Map<Integer, ContactBean> contactIdMap = null; private String friendName = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_friends); contactList = (ListView) findViewById(R.id.contact_list); alphabeticBar = (QuickAlphabeticBar) findViewById(R.id.fast_scroller); contactList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ContactBean valueContent = (ContactBean)parent.getItemAtPosition(position); Log.d(TAG, "content : "+valueContent.getDesplayName()); ImageView choose = (ImageView)view.findViewById(R.id.choose); TextView name = (TextView)view.findViewById(R.id.name); choose.setImageResource(R.drawable.ic_menu_done_holo_dark); friendName = name.getText().toString(); //passChooseName(friendName); } }); asyncQueryHandler = new MyAsyncQueryHandler(getContentResolver()); init(); } @Override protected void onPause() { super.onPause(); } /* private void passChooseName(String name) { Log.d(TAG, "pass choose name"); if(name != null) { Intent resultIntent = new Intent(); Log.d(TAG, "friend name : "+name); resultIntent.putExtra("friend_name", name); this.setResult(Activity.RESULT_OK, resultIntent); finish(); } } */ private void init() { Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; String[] projection = { ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.DATA1, "sort_key", ContactsContract.CommonDataKinds.Phone.CONTACT_ID, ContactsContract.CommonDataKinds.Phone.PHOTO_ID, ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY }; asyncQueryHandler.startQuery(0, null, uri, projection, null, null, "sort_key COLLATE LOCALIZED asc"); } private class MyAsyncQueryHandler extends AsyncQueryHandler { public MyAsyncQueryHandler(ContentResolver cr) { super(cr); } @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { if (cursor != null && cursor.getCount() > 0) { contactIdMap = new HashMap<Integer, ContactBean>(); list = new ArrayList<ContactBean>(); cursor.moveToFirst(); for (int i = 0; i < cursor.getCount(); i++) { cursor.moveToPosition(i); String name = cursor.getString(1); String number = cursor.getString(2); String sortKey = cursor.getString(3); int contactId = cursor.getInt(4); Long photoId = cursor.getLong(5); String lookUpKey = cursor.getString(6); if (contactIdMap.containsKey(contactId)) { } else { ContactBean contact = new ContactBean(); contact.setDesplayName(name); contact.setPhoneNum(number); contact.setSortKey(sortKey); contact.setPhotoId(photoId); contact.setLookUpKey(lookUpKey); list.add(contact); contactIdMap.put(contactId, contact); } } if (list.size() > 0) { setAdapter(list); } } super.onQueryComplete(token, cookie, cursor); } } private void setAdapter(List<ContactBean> list) { adapter = new ContactListAdapter(this, list, alphabeticBar); contactList.setAdapter(adapter); alphabeticBar.init(FriendsActivity.this); alphabeticBar.setListView(contactList); alphabeticBar.setHight(alphabeticBar.getHeight()); alphabeticBar.setVisibility(View.VISIBLE); } }