CursorAdapter的使用:获取手机联系人
来源:互联网 发布:手机打印软件惠普 编辑:程序博客网 时间:2024/05/21 15:50
CursorAdapter使用:获取手机联系并人显示
在上一篇中介绍了一下ListView中BaseAdapter的使用,现在主要介绍一下CursorAdapter的使用
1 CursorAdapter基础知识:CursorAdapter是继承BaseAdapter的,然后重写两个抽象方法,newView()和bindView();newView并不会每一次都会调用(listview的复用),而bindView每一次都会调用(listview中每个item显示的内容,因为每一个item显示的具体内容是不一样的)。
2CursorAdapter的使用场景。安卓中设计了多种适配模式,可以让我们更加灵活的使用。CursorAdapter的设计,特别适合我们对数据库中进行操作。
示例:通过内容解析者得到手机联系人
package com.example.demo_contact;import android.app.Activity;import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.support.v4.widget.CursorAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity { private MyAdapter adapter; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = (ListView) findViewById(R.id.listview); // 从内容解析者中得到一个cursor,对cursor进行遍历得到联系人; ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); adapter = new MyAdapter(MainActivity.this, cursor); listview.setAdapter(adapter); } private class MyAdapter extends CursorAdapter { public MyAdapter(Context context, Cursor c) { super(context, c); // TODO Auto-generated constructor stub } @Override public View newView(Context context, Cursor cursor, ViewGroup viewGroup) { // TODO Auto-generated method stub int i = 0; ViewHolder holder = new ViewHolder(); View view = View.inflate(MainActivity.this, R.layout.item, null); holder.name = (TextView) view.findViewById(R.id.name); holder.phone = (TextView) view.findViewById(R.id.phone); view.setTag(holder); System.out.println("new view++++++++++++++++"); return view; } @Override public void bindView(View view, Context context, Cursor cursor) { // TODO Auto-generated method stub ViewHolder holder = (ViewHolder) view.getTag(); String name = cursor .getString(cursor .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phone = cursor .getString(cursor .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); holder.name.setText(name); holder.phone.setText(phone); System.out.println("bind view---------------"); } } private static class ViewHolder { TextView name; TextView phone; }}
主界面布局文件
<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=".MainActivity" > <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView></RelativeLayout>
item布局文件
<?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" > <TextView android:id="@+id/name" android:layout_width="80dp" android:layout_height="50dp" android:layout_marginLeft="10dp" android:gravity="center_vertical" android:text="name" android:textSize="16dp" /> <TextView android:id="@+id/phone" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_marginLeft="40dp" android:gravity="center_vertical" android:text="phone" android:textSize="16dp" /></LinearLayout>
运行结果:
在控件台中打印的Log:
根据打印的结果可以看出,bindView每一次都会执行,而newView如果没有复用的item,则会创建一个,如果有的话就不会重新创建。
2 0
- CursorAdapter的使用:获取手机联系人
- 获取手机的联系人
- 使用Contenprovider获取手机联系人,获取外部的音频文件
- Android基础之CursorAdapter 的用法与获取联系人信息显示、并点击拨号
- Android 使用AsyncTaskLoader获取手机联系人
- android 使用内容提供者获取手机联系人
- android 使用内容提供者获取手机联系人
- CursorAdapter类的使用
- Android CursorAdapter的使用
- CursorAdapter的使用
- 获取手机上的联系人的详细信息
- Android获取手机联系人信息的方法
- Android中获取手机联系人的优化
- 安卓获取手机上的联系人
- Android 获取手机的联系人进行操作
- android 获取手机联系人的类
- 获取手机系统联系人的方法
- 获取手机中联系人的数据
- iOS中集合遍历方法的比较和技巧
- SAP IDES ECC 6.0安装完后,没有数据
- HTTPS隧道
- hdu5311
- 同现矩阵
- CursorAdapter的使用:获取手机联系人
- Android 多分辨率自适应总结
- 诗《风云续》
- 屏幕取色工具ColorPix
- solor5.x搭建
- ContentProvider读取联系人数据和ContentObsever实时短信监听
- Swift的单例模式写法
- ubuntu安装jdk的环境变量设置
- 使用WebLogic时控制台输出中文乱码解决方法