Android学习之适配器SimpleCursorAdapter

三.   SimpleCursorAdapter与SimpleAdapter用法相近。只是将List对象换成了Cursor对象。而且SimpleCursorAdapter类构造方法的第四个参数from表示Cursor对象中的字段,而SimpleAdapter类构造方法的第四个参数from表示Map对象中的key.

这个实例主要是查询通讯录,实现联系人拨号实例:

1.java代码:

 1 package com.example.simplecursoradapter;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.database.Cursor;
 6 import android.database.CursorWrapper;
 7 import android.graphics.Color;
 8 import android.net.Uri;
 9 import android.os.Bundle;
10 import android.provider.Contacts.People;
11 import android.telephony.PhoneNumberUtils;
12 import android.util.Log;
13 import android.view.View;
14 import android.widget.AdapterView;
15 import android.widget.LinearLayout;
16 import android.widget.ListAdapter;
17 import android.widget.ListView;
18 import android.widget.SimpleCursorAdapter;
19
20
21 public class MainActivity extends Activity {
22     private static final String TAG = "MainActivity";
23     ListView listView;
24     ListAdapter adapter;
25
26     @Override
27     public void onCreate(Bundle savedInstanceState) {
28         super.onCreate(savedInstanceState);
29
30         LinearLayout linearLayout = new LinearLayout(this);
31         linearLayout.setOrientation(LinearLayout.VERTICAL);
32
33         LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
34                 LinearLayout.LayoutParams.FILL_PARENT,
35                 LinearLayout.LayoutParams.WRAP_CONTENT);
36
37         listView = new ListView(this);
38         linearLayout.addView(listView, param);
39         this.setContentView(linearLayout);
40
41         // 从数据库获取联系人姓名和电话号码
42         Cursor cur = this.getContentResolver().query(People.CONTENT_URI, null,
43                 null, null, null);
44         adapter = new SimpleCursorAdapter(this,
45                 android.R.layout.simple_list_item_2, cur, new String[] {
46                         People.NAME, People.NUMBER }, new int[] {
47                         android.R.id.text1, android.R.id.text2 });
48         this.startManagingCursor(cur);
49         listView.setAdapter(adapter);
50
51         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
52
53             public void onItemClick(AdapterView<?> arg0, View arg1,
54                     int position, long arg3) {
55
56                 // names=((CursorWrapper)listView.getItemAtPosition(position)).getColumnNames();
57                 // 从指针的封装类中获得选中项的电话号码并拨号
58                 CursorWrapper wrapper = (CursorWrapper) listView
59                         .getItemAtPosition(position);
60                 int columnIndex = wrapper.getColumnIndex(People.NUMBER);
61                 if (!wrapper.isNull(columnIndex)) {
62                     String number = wrapper.getString(columnIndex);
63                     Log.d(TAG, "number=" + number);
64                     // 判断电话号码的有效性
65                     if (PhoneNumberUtils.isGlobalPhoneNumber(number)) {
66                         Intent intent = new Intent(Intent.ACTION_DIAL, Uri
67                                 .parse("tel://" + number));
68                         startActivity(intent);
69                     }
70                 }
71             }
72         });
73     }
74 }

记得添加权限:

<!-- 点击拨号时,询问调用默认的程序还是调用本程序拨号 -->
 <intent-filter>
     <action android:name="android.Intent.Action.CALL_BUTTON" />

     <category android:name="android.Intent.Category.DEFAULT" />
</intent-filter>

<uses-permission android:name="android.permission.READ_CONTACTS" />
时间: 2024-11-06 07:18:57

Android学习之适配器SimpleCursorAdapter的相关文章

Android学习之适配器Adapter

Adapter是个什么角色呢?其实它的作用就是View界面和数据之间的桥梁.我们可以看作是界面数据绑定的一种理解,它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等. 常用的适配器有: (1)ArrayAdapter:             数组作为数据源,填充的是ArrayAdapter (2)SimpleAdapter:           List作为数据源,填充的是SimpleAdapter (3)SimpleCursorAdapter: 数据来源一般都是数据库查询

Android学习---ListView的点击事件,simpleAdapter和arrayadapter,SimpleCursoAdapter的原理和使用

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p

Android学习---ListView的点击事件,simpleAdapter和arrayadapter的原理和使用 - Hi_Amos

如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { /** * * @param parent 当前ListView * @param view 代表当前被点击的条目 * @param position 当前条目的位置 * @p

android学习---Gallery画廊视图

Gallery与Spinner有共同父类:AbsPinner,说明Gallery与Spinner都是一个列表框.它们之间的区别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是一个水平的列表选择框.Spinner的作用是供用户选择,而Gallery则允许用户通过拖动查看上一个,下一个. Gallery用法与Spinner的用法形似,只要为它提供一个内容Adapter就可以了.Adapter的getView方法返回View作为Gallery列表的列表项.如果程序需要监控Gal

[Android学习系列13]关于Gridview的一些事

用mvc的思想去理解 数据源,adapter,xxxView的关系,写代码就轻松多了 先写一个简单的gridview 第一版:只有图片 xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent&q

[Android学习系列16]Android把php输出的json加载到listview

首先写个php脚本输出json,注意,还要输出回车,方便android的bufferreader读取一行 <?php class Book { public $bookid; public $bookname; public $bookinfo; function __construct($id,$name,$info ){ $this->bookid = $id; $this->bookname = $name; $this->bookinfo = $info; } } $boo

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

Android学习笔记(四二):SQLite、ListView、ContextMenu

继续上一个例子,结合ListView中对SQLite进行操作. 通过CursorAdapter在ListView中的数据呈现 在上一个例子中,我们可以对SQLite中的数据库进行增删改查,将数据读到游标Cursor中,然后一一读出.在Android中可以通过CursorAdapter直接将数据映射到ListView中,如下处理: public class Chapter22Test1 extends ListActivity{    private SQLiteDatabase  db = nu

Android学习笔记(二十):回归简单的ListView

在之前连续对ListVew作了逐步深入的探讨,对于手持屏幕来讲,其实可以比较简单,如果别人愿意付钱,不在乎将代码再些一次,这是客户端的开发和复杂服务器的开发不同的地方.当然各人有各人的看法.绝大部分情况下,一个list元素可能左右各有一个widget就差不多,回归简约风格,这也是小尺寸屏幕和手指操作的特点. 在数据的传递,Java里面,具有<Key,Value>的Hash是非常重要的,可以方便增/删/改/查,如果我们不使用数据库存储,或者将数据存放在内存中,<Key,Value>是