获得联系人显示于ListView中,并实现单击联系人拨号
来源:互联网 发布:python telnet expect 编辑:程序博客网 时间:2024/05/29 10:46
很多书上只讲到了从数据库中获得联系人,并显示在一个ListView中,却没有讲到单击联系人需要拨号,经过本人努力,实现了这个功能。
主要是需要知道并获得CursorWrapper 这个类,它是指针的封装类,可以用于获得当前指针指向的数据。代码公布如下:
ANDROID初级历险之spinner篇
listview和spinner都算是adapter容器,在显示时都需要一个adapter去装载需要显示的数据。上一篇已经介绍了怎样用adapter去做数据绑定,这节我们去看看下试图部分的模板。
回忆下,在listview中的ArrayAdapter部分,我们用过simple_list_item_1做视图模板。这个视图模板实际上就是一个textview组件而已。你到对应sdk的layout目录下可以找到答案。同时你也可以发现还有很多可用的模板:simple_list_item_2,simple_list_item_checked,simple_list_item_multiple_choice,simple_list_item_single_choice…这些模板理论上都可以替换原来的simple_list_item_1。具体看进去:simple_list_item_2就是2个textview构成的。simple_list_item_multiple_choice和simple_list_item_single_choice实际上就是个CheckedTextView,checkMark属性是个reference类型,引用单选或多选按钮图片就成了上面2个视图的区别。
同理,spinner也有2种模板。simple_spinner_item,这个是textview的。simple_spinner_dropdown_item,这个是带单选按钮的。
所以熟悉了系统自带的默认模板,有时候我们会发现大部分情况下,我们并不需要自定义视图模板了…
稍微仔细观察下listview和spinner的不同,你会发现listview是全屏的,而spinner的是模态的圆角非全屏的。显然spinner的表现要好得多,那它和listview有什么不同呢?
spinner有一个属性android:prompt,提示这样描述的,The prompt to display when the spinner’s dialog is shown。哦,原来弹出的是个dialog。那弹出的dialog中这么显示列表呢?源代码进去找,发现个AlertDialog有setItems方法或者setAdapter方法,可以让我们轻松的显示一个集合列表。在仔细看进去,你还会发现几个类似的方法:setMultiChoiceItems,setSingleChoiceItems …
基本上到这里,常用的listview和spinner之间的区别就这些了。
主要是需要知道并获得CursorWrapper 这个类,它是指针的封装类,可以用于获得当前指针指向的数据。代码公布如下:
import android.app.Activity;import android.app.PendingIntent;import android.content.ContentUris;import android.content.Intent;import android.database.Cursor;import android.database.CursorWrapper;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.provider.Contacts.People;import android.telephony.PhoneNumberUtils;import android.telephony.gsm.SmsManager;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.LinearLayout;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.Toast;public class App extends Activity {private static final String TAG="App";ListView listView;ListAdapter adapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.main); LinearLayout linearLayout=new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.setBackgroundColor(Color.BLACK); LinearLayout.LayoutParams param=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); listView=new ListView(this); listView.setBackgroundColor(Color.BLACK); linearLayout.addView(listView,param); this.setContentView(linearLayout); //从数据库获取联系人姓名和电话号码 Cursor cur=this.getContentResolver().query(People.CONTENT_URI,null, null,null,null); adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cur,new String[]{People.NAME,People.NUMBER},new int[]{android.R.id.text1,android.R.id.text2}); this.startManagingCursor(cur); listView.setAdapter(adapter); //listView.setEmptyView(findViewById(R.id.empty)); listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stub//openToast("滚动到:"+arg0.getSelectedItemId());//短信发送//PendingIntent pi = PendingIntent.getActivity(App.this,0,new Intent(App.this,App.class),0);//SmsManager sms = SmsManager.getDefault(); //sms.sendTextMessage("5554", null, "message", pi, null); }public void onNothingSelected(AdapterView<?> arg0) {// TODO Auto-generated method stub} }); listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {// TODO Auto-generated method stub//String[] names=((CursorWrapper)listView.getItemAtPosition(position)).getColumnNames();//从指针的封装类中获得选中项的电话号码并拨号CursorWrapper wrapper=(CursorWrapper)listView.getItemAtPosition(position);int columnIndex=wrapper.getColumnIndex(People.NUMBER);if(!wrapper.isNull(columnIndex)){String number=wrapper.getString(columnIndex);Log.d(TAG,"number="+number);////判断电话号码的有效性if(PhoneNumberUtils.isGlobalPhoneNumber(number)){Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel://"+ number));startActivity(intent);}}} }); } private void openToast(String str){ Toast.makeText(this,str,Toast.LENGTH_SHORT).show(); }}
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wt.app" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".App" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- 点击拨号时,询问调用默认的程序还是调用本程序拨号 --> <intent-filter> <action android:name="android.Intent.Action.CALL_BUTTON" /> <category android:name="android.Intent.Category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-sdk android:minSdkVersion="3" /></manifest>
ANDROID初级历险之spinner篇
listview和spinner都算是adapter容器,在显示时都需要一个adapter去装载需要显示的数据。上一篇已经介绍了怎样用adapter去做数据绑定,这节我们去看看下试图部分的模板。
回忆下,在listview中的ArrayAdapter部分,我们用过simple_list_item_1做视图模板。这个视图模板实际上就是一个textview组件而已。你到对应sdk的layout目录下可以找到答案。同时你也可以发现还有很多可用的模板:simple_list_item_2,simple_list_item_checked,simple_list_item_multiple_choice,simple_list_item_single_choice…这些模板理论上都可以替换原来的simple_list_item_1。具体看进去:simple_list_item_2就是2个textview构成的。simple_list_item_multiple_choice和simple_list_item_single_choice实际上就是个CheckedTextView,checkMark属性是个reference类型,引用单选或多选按钮图片就成了上面2个视图的区别。
同理,spinner也有2种模板。simple_spinner_item,这个是textview的。simple_spinner_dropdown_item,这个是带单选按钮的。
所以熟悉了系统自带的默认模板,有时候我们会发现大部分情况下,我们并不需要自定义视图模板了…
稍微仔细观察下listview和spinner的不同,你会发现listview是全屏的,而spinner的是模态的圆角非全屏的。显然spinner的表现要好得多,那它和listview有什么不同呢?
spinner有一个属性android:prompt,提示这样描述的,The prompt to display when the spinner’s dialog is shown。哦,原来弹出的是个dialog。那弹出的dialog中这么显示列表呢?源代码进去找,发现个AlertDialog有setItems方法或者setAdapter方法,可以让我们轻松的显示一个集合列表。在仔细看进去,你还会发现几个类似的方法:setMultiChoiceItems,setSingleChoiceItems …
基本上到这里,常用的listview和spinner之间的区别就这些了。
0 0
- 获得联系人显示于ListView中,并实现单击联系人拨号
- ContentResolver实现获取手机联系人并显示在ListView中
- Android进阶之读取手机联系人显示listview并点击拨号(CursorAdapter)
- Android中实现显示手机联系人并调用
- listview分页联系人,并实现打电话功能,
- 实现读取手机中所有联系人的主要信息(名称和联系电话),并以ListView显示
- 实现一个android拨号联系人
- Android中读取联系人并显示
- Android 获得联系人并排序
- 利用Content provide获取电话联系人并显示在listview
- android 2.2 获取联系人,电话,并拨号
- android 2.2 获取联系人,电话,并拨号
- android 2.2 获取联系人,电话,并拨号
- 获得联系人
- Android基础之CursorAdapter 的用法与获取联系人信息显示、并点击拨号
- ListView中获取系统联系人
- SimpleCursorAdapter-获取电话簿中联系人并显示在类表中
- Android中获取系统通讯录联系人并显示在EditText
- 地图编辑器Mappy下载
- j2me工具类:PalettedImage调色板类
- j2me工具类:声音播放类SoundUtil
- 多线程
- 干货demo,3D侧滑菜单
- 获得联系人显示于ListView中,并实现单击联系人拨号
- 自定义图文并茂的Button
- Android系统中自带的图标&一些预定义样式&参考颜色值
- Java 线程池执行原理分析
- 判断是否登录的拦截器SessionFilter
- 超简单的画线程序
- adb显示unity运行的log
- 判断是否登录的拦截器CheckLoginFilter
- velocity使用中出现org.apache.velocity.exception.ResourceNotFoundException的解决办法