Android程序:获取手机通讯录并用优化后的listview显示
来源:互联网 发布:中文linux操作系统 编辑:程序博客网 时间:2024/05/17 08:53
手机信息类
public class PhoneInfo { private String name; private String number; public PhoneInfo(String name, String number) { setName(name); setNumber(number); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; }}
获取联系人姓名和号码的方法类
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 phoneNum; String phoneName; while (cursor.moveToNext()) { //获取号码并去除空格 phoneNum=(cursor.getString(cursor.getColumnIndex(Phone.NUMBER))).replaceAll("\\s*", ""); //去除号码中+86前缀 if(phoneNum.substring(0, 3).equals("+86")){ phoneNum=phoneNum.substring(3); } phoneName=cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME)); PhoneInfo phoneInfo=new PhoneInfo(phoneName, phoneNum); lists.add(phoneInfo); } return null; }}
自定义适配器MyAdapter
public class MyAdapter extends BaseAdapter { private List<PhoneInfo> lists; private Context context; public MyAdapter(List<PhoneInfo> lists, Context context) { super(); this.lists = lists; this.context = context; } @Override public int getCount() { return lists.size(); } @Override public Object getItem(int position) { return lists.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) {// 未优化的代码// LayoutInflater inflater=LayoutInflater.from(context);// layout=(LinearLayout) inflater.inflate(R.layout.call, null);// TextView nametv=(TextView) layout.findViewById(R.id.name);// TextView numbertv=(TextView) layout.findViewById(R.id.number);// nametv.setText(lists.get(position).getName());// numbertv.setText(lists.get(position).getNumber()); //优化后的listview ViewHolder holder; if(convertView==null){ convertView=LayoutInflater.from(context).inflate(R.layout.call, null); holder=new ViewHolder(); holder.nametv=(TextView) convertView.findViewById(R.id.name); holder.numbertv=(TextView) convertView.findViewById(R.id.number); holder.nametv.setText(lists.get(position).getName()); holder.numbertv.setText(lists.get(position).getNumber()); convertView.setTag(holder); }else { holder=(ViewHolder) convertView.getTag(); holder.nametv.setText(lists.get(position).getName()); holder.numbertv.setText(lists.get(position).getNumber()); } return convertView; } private static class ViewHolder{ TextView nametv; TextView numbertv; }}
call.xml:list显示的样式
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/imageView1" android:layout_width="45dp" android:layout_height="45dp" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical" android:orientation="horizontal" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/name" android:textSize="15sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/number" android:textSize="10sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> </LinearLayout> </LinearLayout></LinearLayout>
MainActivity
public class MainActivity extends Activity { private ListView lv; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GetNumber.getNumber(MainActivity.this); lv=(ListView) findViewById(R.id.lv); adapter=new MyAdapter(GetNumber.lists, this); lv.setAdapter(adapter); }}
0 0
- Android程序:获取手机通讯录并用优化后的listview显示
- android 读取手机通讯录并显示listview
- android 读取手机通讯录并显示listview
- android 获取通讯录并显示listview
- Android 获取手机的通讯录
- android 获取手机通讯录联系人,模拟通讯录显示
- android开发_获取android应用程序的相关信息并用ListView显示
- 读取手机联系人,并用listview显示
- Android 获取手机通讯录
- android获取手机通讯录
- android获取手机通讯录
- 获取手机通讯录-----1.2(取出通讯录数据,用ListView)显示
- Android ListView的使用优化以及获取手机所有应用程序
- Android中手机通讯录的获取
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- android获取手机通讯录联系人
- DatePicker
- Smalidea无源码调试 android 应用
- Linux学习笔记
- android关于AlertDialog.Builder中setMessage不能换行问题的解决方法
- hdoj-1001 sum problem
- Android程序:获取手机通讯录并用优化后的listview显示
- 关于SVN 目录结构,版本发布,版本合并
- Java 内存泄露 与 Reference
- 我在无线互联学习记录连载1
- js中判断是否为数字
- iOS OC06.2_字典
- 如何父元素下面的某个子元素的具体值
- linux中Cron定时任务系统命令详解
- 排序算法总结&&java代码实现