android手机通讯录

来源:互联网 发布:我的淘宝是什么流量 编辑:程序博客网 时间:2024/06/10 03:34

Android 系统给我们提供了访问通讯录的接口,通过接口获取通讯录信息。Adapter 与 View 的连接主要依靠 getView 这个方法返回我们需要的自定义 view。 ListView 是 Android App 中一个最最最常用的控件了,所以如何让 ListView 流畅运行,获取良好的用户体验是非常重要的。 对 ListView 优化就是对 Adapter 中的 getView 方法进行优化。

 

核心内容:

1.获取手机通讯录

2.数据封装

3.创建 Adapter 

4.优化适配器

 

开发环境:Eclipse

 

效果图:

 

步骤:

1.新建项目,新建 GetNumber.class 类,用来获取通讯录中的信息

复制代码
package com.yanis.getmyphonenumber;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.database.Cursor;import android.provider.ContactsContract.CommonDataKinds.Phone;public class GetNumber {    public static List<PhoneInfo> lists = new ArrayList<PhoneInfo>();    public static String getNumber(Context context) {        Cursor cursor = context.getContentResolver().query(Phone.CONTENT_URI,                null, null, null, null);        String phoneNumber;        String phoneName;        while (cursor.moveToNext()) {            phoneNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));//电话号码            phoneName = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME));//姓名            PhoneInfo  info = new PhoneInfo(phoneName, phoneNumber);            lists.add(info);            System.out.println(phoneName+phoneNumber);        }        return null;    }}
复制代码

2.添加权限

   <!-- 读取联系人权限 -->  <uses-permission android:name="android.permission.READ_CONTACTS"/>

3.新建 PhoneInfo.class 类作为通讯录信息封装类

复制代码
package com.yanis.getmyphonenumber;/** *  * @author yechao * @说明 通讯录信息封装类 */public class PhoneInfo {    private String phoneName;    private String phoneNumber;    public PhoneInfo(String phoneName, String phoneNumber) {        setPhoneName(phoneName);        setPhoneNumber(phoneNumber);    }    public String getPhoneName() {        return phoneName;    }    public void setPhoneName(String phoneName) {        this.phoneName = phoneName;    }    public String getPhoneNumber() {        return phoneNumber;    }    public void setPhoneNumber(String phoneNumber) {        this.phoneNumber = phoneNumber;    }}
复制代码

4.自定义 ListView 的适配器类 MyAdapter.class 

复制代码
package com.yanis.getmyphonenumber;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.TextView;public class MyAdapter extends BaseAdapter {    private List<PhoneInfo> lists;    private Context context;//承接上下文        public MyAdapter(List<PhoneInfo> lists,Context context)    {        this.lists = lists;        this.context = context;    }        //返回集合的数量    @Override    public int getCount() {        return lists.size();    }    //返回当前数据    @Override    public Object getItem(int position) {        return lists.get(position);    }    //获取当前ID    @Override    public long getItemId(int position) {        return position;    }    //返回当前视图     @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder ;        if(convertView==null)        {            convertView = LayoutInflater.from(context).inflate(R.layout.call,null);            holder = new ViewHolder();            holder.tvName =  (TextView)convertView.findViewById(R.id.tv_Name);            holder.tvNumber =  (TextView)convertView.findViewById(R.id.tv_Number);            convertView.setTag(holder);        }else {            holder = (ViewHolder)convertView.getTag();        }        holder.tvName.setText(lists.get(position).getPhoneName());        holder.tvNumber.setText(lists.get(position).getPhoneNumber());        return convertView;    }        private static class ViewHolder{        TextView tvName;        TextView tvNumber;    }}
复制代码

5.最后就是主界面代码,至于布局太简单就不列出来了,有兴趣的童鞋可以查看源代码

复制代码
package com.yanis.getmyphonenumber;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;public class MainActivity extends Activity {    private ListView listView;    private MyAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        GetNumber.getNumber(this);        initView();    }    private void initView() {        listView =(ListView) findViewById(R.id.listView);        adapter = new MyAdapter(GetNumber.lists, this);        listView.setAdapter(adapter);    }}
复制代码

 

 

源代码地址:https://github.com/YeXiaoChao/Yc_demo_getMyPhoneNumber

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 工作不想干了怎么办啊 浴室门玻璃坏了怎么办 电梯顶层安全安全距离不合格怎么办 制冰机有些孔不出水怎么办 制冰机排水孔堵住了怎么办 点我达装备抽查怎么办 空军常服大檐帽有一点变形怎么办 一般纳税人没有进项发票怎么办 汽车购买发票丢了怎么办 购买房子的发票丢了怎么办 购买的二手房发票丢失怎么办 购买空调时的发票丢失怎么办 发票购票本丢了怎么办 留学中介费贵了怎么办 车祸伤者不肯出院怎么办 增值税普通发票发票联丢失怎么办 纳税识别号错了怎么办 电子发票税号填写错误怎么办 发票抬头名称写错了怎么办 滴滴发票抬头写错了怎么办 普票抬头开错了怎么办 发票号码打错了怎么办 个人税票开错了怎么办 普票地址错了怎么办 专票税率开高了怎么办 专票税率开错了怎么办 发票姓名写错了怎么办 首付发票姓名写错怎么办 一般纳税人税率开错了怎么办 电子税票开错了怎么办 税率是6%开成3%怎么办 医院收费收错了怎么办 发票少打一个字怎么办 增值税发票抬头错了一个字怎么办 暂估入账跨年了怎么办 电子发票写错了怎么办 发票纳税人识别号写错了怎么办 电子发票忘填邮箱怎么办 公司名跟发票抬头不一样怎么办 买空调不给发票怎么办 卖苹果手机没有发票怎么办