关于使用AutoCompleteTextView和CursorAdapter查询电话联系人并找出电话号码

原创 2011年01月21日 12:34:00

学习到这部分遇见很多的问题,看了很多人讲的关于这部分的文章同时结合自己的测试总结如下:

 

程序的目地是在AutoCompleteTextView里面输入联系人名同时自动找出建议的联系人,选取某个联系人后得到该联系人的电话号码。

这里关键是实现一个自己的XXXXXAdapter 继承自CursorAdapter。

要继承CursorAdapter类。必须实现(Override)的方法有:

      一  先实现 public Cursor runQueryOnBackgroundThread(CharSequence constraint)

      其中constraint就是输入的要查询的关键字,注意当选中输入框的时候,此方法就会被调用,此时constraint = null 如处理不当运行时会报错

这里的返回值Cursor.并将提供给方法public View  newView( , ,)使用;

      二  然后实现方法public View newView(Context context, Cursor cursor, ViewGroup parent),cursor是上一个方法产生的.这个方法里面需要构造一个在dropdown里显示的view(我把这个view理解为例表中每行显示内容的一个模型,这里可以通过LayoutInflater构造出需要的样式)。这个view作为返回值在bindView( )中还会用到。

      三  再是实现方法public void bindView(View view, Context context, Cursor cursor) 。view就是第二步产生的。cursor是第一步产生的。这里就是把corsor里的数据绑定到view中对应的元素中去。注意此方法会多次频繁调用,所以不要有耗时的操作,不然会卡。

      四   最后是 public CharSequence convertToString(Cursor cursor) 此方法是在我们选择某个联系人后会显示在AutoCompleteTextView中的内容。

 

        AutoCompleteTextView在布局文件中 

                              android:completionThreshold="1"  表示输入1个字符就显示出建议的联系人

                              android:completionHint="@string/strHint"  表示在建议例表最后显示的一句话,比如“输入*号给出全部联系人“

 

 

         以上就是对CursorAdapter的实现。其中的newView()方法很是让我郁闷了很久, 网上找了很久才大概了解了LayoutInflater的主要目地就是把一个布局文件导入到代码中来,下面//线的几行是不同的使用方法。

我的方法是自己写了个ex05_09_cursoradapterview.xml  ,里面就是很简单的左边一个TextView显示联系人名,右边一个ImageView用于显示一个小图标。关于这部分网上很多查查就有了。

android.R.layout.simple_dropdown_item_1line

位置:mydroid/frameworks/base/core/res/res/layout/simple_dropdown_item_1line.xml

 

 

最后还有程序中使用ContactsContract,我看的书写的是Contacts,似乎是2.0后这个就不建议使用了。这里还有个查找联系人后如何找到属于此人的全部电话号码的问题。

这里提供一个链接 http://hi.baidu.com/wudaovip/blog/item/d7f166df13a8241c495403e7.html

电话语音查询系统

近日对 电话语音查询系统 感兴趣程熙还好吗?
  • Cte123456
  • Cte123456
  • 2007年04月10日 13:23
  • 571

AutoCompleteTextView自动提示联系人信息

AutoCompleteTextView文本框输入联系人号码
  • canot
  • canot
  • 2016年01月17日 23:11
  • 660

android查看联系人姓名和手机号码

第一步:布局文件就是一个Button,点击弹出联系人列表,选择联系人后将联系人的信息显示在两个TextView上,布局代码很简单,此处不再给出。 第二步:调到联系人选择页面并返回所选择的联系人信息可...
  • csdn_blog_lcl
  • csdn_blog_lcl
  • 2016年09月17日 11:33
  • 1323

CursorAdapter的使用:获取手机联系人

CursorAdapter使用:获取手机联系并人显示在上一篇中介绍了一下ListView中BaseAdapter的使用,现在主要介绍一下CursorAdapter的使用1 CursorAdapter基...
  • androidxiaogang
  • androidxiaogang
  • 2015年07月27日 13:46
  • 818

android:获取联系人原理(姓名和电话)详解

原文地址:http://www.ginchenorlee.com/?p=236&replytoc 最近在弄安卓联系人, 网上有很多资料,但是都很冗杂,经过自己的深层摸索,写下自己的学习心得: 讲2...
  • u013337743
  • u013337743
  • 2015年04月26日 14:39
  • 2451

使用 ContentProvider 管理联系人(包括每人有多个电话号码)

Android 系统提供了 Contacts 应用来管理联系人,而且 Android 系统还为联系人管理提供了 ContentProvider,这就允许其他应用程序以 ContentResolver ...
  • antimage08
  • antimage08
  • 2016年01月02日 19:31
  • 558

一个电话本中联系人名字搜索高亮的实现

一个电话本中联系人名字搜索高亮的实现 需求:实现电话本名字搜索功能的高亮实现,其中搜索支持中文、简拼、全拼搜索,对搜索匹配到的名字部分高亮显示。 例如: 名字:张向东 全拼:zhangxiangd...
  • twoconk
  • twoconk
  • 2016年11月28日 14:07
  • 892

Android进阶之读取手机联系人显示listview并点击拨号(CursorAdapter)

一、CursorAdapter介绍1、继承于BaseAdapter是个虚类,它为cursor和ListView提供了连接的桥梁。 如:public abstract class CursorAdap...
  • chenliguan
  • chenliguan
  • 2015年09月09日 15:06
  • 859

根据电话号码查找通讯录中联系人姓名

方法一 参照google文档的说明进行的查找操作: google文档query说明如下(第二条): Query If you need to read an individual ...
  • Qiqihar
  • Qiqihar
  • 2013年05月27日 15:09
  • 888

查询电话联系人(包括sim卡)

/**  * 转账界面  * @author haie  *  */ public class TransferActivity extends Activity{     @View...
  • u013042707
  • u013042707
  • 2014年07月28日 17:30
  • 552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于使用AutoCompleteTextView和CursorAdapter查询电话联系人并找出电话号码
举报原因:
原因补充:

(最多只允许输入30个字)