如何从联系人里加载列表(ListView)
来源:互联网 发布:中国的软件行业 编辑:程序博客网 时间:2024/04/30 10:23
一、效果图
选择listview一行后执行打电话操作
二、如何实现
1、从手机里读取联系人信息
/**联系人名称**/
private ArrayList<String> mContactsName = new ArrayList<String>(); /**联系人电话**/private ArrayList<String> mContactsNumber = new ArrayList<String>(); /**联系人头像**/private ArrayList<Bitmap> mContactsPhonto = new ArrayList<Bitmap>(); /**得到手机通讯录联系人信息**/private void getPhoneContacts() { ContentResolver resolver = mContext.getContentResolver(); // 获取手机联系人 Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION, null, null, null); if (phoneCursor != null) { while (phoneCursor.moveToNext()) { //得到手机号码 String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX); //当手机号码为空的或者为空字段 跳过当前循环 if (TextUtils.isEmpty(phoneNumber)) continue; //得到联系人名称 String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX); //得到联系人ID Long contactid = phoneCursor.getLong(PHONES_CONTACT_ID_INDEX); //得到联系人头像ID Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX); //得到联系人头像Bitamp Bitmap contactPhoto = null; //photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的 if(photoid > 0 ) { Uri uri =ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid); InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(resolver, uri); contactPhoto = BitmapFactory.decodeStream(input); }else { contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.defaoult); } mContactsName.add(contactName); mContactsNumber.add(phoneNumber); mContactsPhonto.add(contactPhoto); } phoneCursor.close();}}
2、实现自定义BaseAdapter
class MyListAdapter extends BaseAdapter {
public MyListAdapter(Context context) { mContext = context; } public int getCount() { //设置绘制数量 return mContactsName.size(); } @Override public boolean areAllItemsEnabled() { return false; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView iamge = null; TextView title = null; TextView text = null; if (convertView == null || position < mContactsNumber.size()) { convertView = LayoutInflater.from(mContext).inflate( R.layout.list_item, null); iamge = (ImageView) convertView.findViewById(R.id.item_image); title = (TextView) convertView.findViewById(R.id.item_title); text = (TextView) convertView.findViewById(R.id.item_text); } //绘制联系人名称 title.setText(mContactsName.get(position)); //绘制联系人号码 text.setText(mContactsNumber.get(position)); //绘制联系人头像 iamge.setImageBitmap(mContactsPhonto.get(position)); return convertView; } }
3、list_item.xml 布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/item_image" android:layout_width="40dip" android:layout_height="40dip" /> <TextView android:id="@+id/item_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@+id/item_image" android:singleLine="true" android:ellipsize="marquee" android:textSize="15dip" /> <TextView android:id="@+id/item_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@+id/item_image" android:layout_below="@+id/item_title" android:singleLine="true" android:ellipsize="marquee" android:textSize="20dip" /> </RelativeLayout>
3、监听列表事件,当选中一行,给该联系人打电话
mListView.setOnItemClickListener(new OnItemClickListener() { @Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { //调用系统方法拨打电话 Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri .parse("tel:" + mContactsNumber.get(position))); startActivity(dialIntent); } });
源码地址:http://download.csdn.net/detail/m370809968/6500709
- 如何从联系人里加载列表(ListView)
- listview-联系人列表
- 仿微信联系人索引列表ListView
- 如何获取联系人列表
- 从手机里读取联系人
- Android 如何在ListView里加载远程图片?
- 如何从电话本添加联系人
- 在Activity里显示列表(ListView的布局)
- 如何在泰国#组联系人列表中的联系人姓名分类?
- 如何清理邮箱联系人列表及策略
- java 程序里如何实现从一个列表中拖动一个元素到另一个列表中?
- 带中文索引的ListView 仿微信联系人列表
- 8.列表视图ListView控件的实例:联系人界面
- RecyclerView+ImageLoader图片列表的加载与展示【从listview加载图片性能优化引出的解决方法】
- 从HolderView加载ListView异常
- android 怎么调用联系人列表,并将选择的联系人号码显示在文本框里
- android 怎么调用联系人列表,并将选择的联系人号码显示在文本框里
- Listview如何在每次加载前先清除之前的列表信息
- Attribute/特性,笔记
- Documentation_cgroups_net_cls
- 汇编语言指令大全
- PhoneGap 常见错误集锦及解决办法
- CSS3 (二) 边框
- 如何从联系人里加载列表(ListView)
- 设计模式 -- 模板方法模式 TemplateMethod
- poj 1064 Cable master 二分长度
- java 静态变量和静态块底层原理
- eclipse常用插件在线安装地址或下载地址
- ZIP BOMB
- Android.mk详细介绍
- alsa lib中ttable相关学习
- PHP的WebServices实现