android学习笔记简单通讯录
来源:互联网 发布:淘宝vip钻石卡 编辑:程序博客网 时间:2024/06/05 17:07
设计思路:
一、UI设置
1.主界面设置一个ListView
2.在listView的子项定义一个自定义布局,里面存放有联系人头像,姓名,电话号码
二、逻辑:
1.获取手机通讯录信息
2.把获取的信息封装保存起来,可定义一个对象包含姓名,电话号码来进行封装
3.通讯录信息与UI的适配
一、设置UI
activity_main.xml
<span style="font-family:Microsoft YaHei;font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.jikexueyuan.getmyphonenumber.MainActivity" > <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" > </ListView></RelativeLayout></span>
cell.xml
<span style="font-family:Microsoft YaHei;font-size:14px;"><?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:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" 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></span>
二、逻辑实现
1.获取手机通讯信息(GetNumberj.ava)
通讯录的信息存储在数据库中,使用context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null); 可以获得一个cursor实例,保存了通讯信息
把数据库里的号码,信息依次取出,存放在lists列表中
<span style="font-family:Microsoft YaHei;font-size:14px;">public class GetNumber {public static List<PhoneInfo> lists = new ArrayList<PhoneInfo>(); //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 phoneInfo = new PhoneInfo(phoneName, phoneNumber);lists.add(phoneInfo);System.out.println(phoneName+phoneNumber);}return null;}</span>2.封装类(PhoneInfo.java)
<span style="font-family:Microsoft YaHei;font-size:14px;">public class PhoneInfo {private String name;private String number;public PhoneInfo(String name,String number) {setNumber(number);setName(name);}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;}}</span>3.通讯录信息与UI的适配(Myadapter.java)
构造方法传入lists里的数据与上下文
重点要重写getView方法
<span style="font-family:Microsoft YaHei;font-size:14px;">public class MyAdapter extends BaseAdapter{private List<PhoneInfo> lists;private Context context;private LinearLayout layout;public MyAdapter(List<PhoneInfo> lists,Context context) {this.lists = lists;this.context = context;}@Overridepublic int getCount() {return lists.size();}@Overridepublic Object getItem(int position) {return lists.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView == null) {<span style="white-space:pre"></span>//如果是第一次创建convertView = LayoutInflater.from(context).inflate(R.layout.cell, null);<span style="white-space:pre"></span>加载cell布局holder = new ViewHolder();<span style="white-space:pre"></span>holder.nametv = (TextView) convertView.findViewById(R.id.name);holder.numbertv = (TextView) convertView.findViewById(R.id.number);convertView.setTag(holder);<span style="white-space:pre"></span>//上面拿到控件实例,这里保存在converView中}else{holder = (ViewHolder) convertView.getTag();<span style="white-space:pre"></span>//直接getTag()拿到控件实例}holder.nametv.setText(lists.get(position).getName());holder.numbertv.setText(lists.get(position).getNumber());return convertView;}</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">private static class ViewHolder{<span style="white-space:pre"></span>//新建内部类,对控件的实例进行缓存TextView nametv;TextView numbertv;}}</span>
4.主MainActiviyu显示 (MainActivity.class)
<span style="font-family:Microsoft YaHei;font-size:14px;">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(this); lv = (ListView) findViewById(R.id.lv); adapter = new MyAdapter(GetNumber.lists, this); lv.setAdapter(adapter); }}</span>
0 0
- android学习笔记简单通讯录
- android中读取通讯录学习笔记
- Android学习之一:通讯录
- Android学习笔记——读取通讯录信息
- Android简单通讯录的实现
- 【Android Demo】简单手机通讯录
- Android简单通讯录的开发
- 【学习笔记】一个简单的在线通讯录:php实现简单的增删改查操作
- iOS学习笔记--自定义通讯录
- Python初学者笔记(4)-简单的通讯录
- android项目--超级简单的android通讯录
- Android学习笔记:访问和添加通讯录中的联系人和联系人数据库表简介一
- iOS学习笔记 系统服务(二)通讯录
- 简单通讯录
- 简单通讯录
- 简单通讯录
- 简单通讯录
- 简单通讯录
- MongoDB自增长ID的实现
- Singleton 单例模式
- SQL语句执行效率及分析(note)
- 黑马程序员-IO-字符流-FileWriter&FileReader
- Spring AOP 实现原理与 CGLIB 应用
- android学习笔记简单通讯录
- Eclipse 卡死在 Android SDK Content Loader
- Android编译APK
- 自定义Notification,Notificaton的使用,
- mahout入门之评估查准率与查全率
- GEF(Graphical Editor Framework) Eclipse项目入门系列(3)---Draw2D例子演示
- IOS crash处理
- PureMVC 使用
- 从具体案例中看项目管理