getAllContants--获取手机联系人列表

2024-08-31 23:58

本文主要是介绍getAllContants--获取手机联系人列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置文件

activity_main.xml(布局文件)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><EditTextandroid:id="@+id/et_main_number"android:layout_width="match_parent"android:layout_height="wrap_content"></EditText><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择联系人" android:onClick="selectPersons"/>
</LinearLayout>

activity_second.xml(listview布局)

<ListView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/lv_list_persons" >
</ListView>

person_item.xml(每个联系人条目布局)

<?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"><TextViewandroid:id="@+id/tv_item_person_name"android:layout_width="100dp"android:layout_height="wrap_content"android:text="TextView" android:textSize="20sp"/><TextViewandroid:id="@+id/tv_item_person_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView" android:textSize="20sp"/>
</LinearLayout>

MainActivity.java

package com.example.l09_app;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;public class MainActivity extends Activity {private EditText et_main_number;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取号码框et_main_number = (EditText) findViewById(R.id.et_main_number);}public void selectPersons(View view) {// 带回调的启动startActivityForResult(new Intent(this, PersonListActivity.class), 1);}// 数据的回显@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == 1 && resultCode == 2) {String number = data.getStringExtra("number");et_main_number.setText(number);}}
}

PersonListActivity.java

package com.example.l09_app;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;public class PersonListActivity extends Activity implements OnItemClickListener {ListView lv_list_persons;// 成员变量初始化data,后面内部类中使用private List<Map<String, String>> data = new ArrayList<Map<String, String>>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);// 获得lv_list_persons---listview视图lv_list_persons = (ListView) findViewById(R.id.lv_list_persons);// 准备数据---content://com.android.contacts/data/phonesUri uri = Phone.CONTENT_URI;String[] projection = { Phone.DISPLAY_NAME, Phone.NUMBER };Cursor cursor = getContentResolver().query(uri, projection, null, null,null);while (cursor.moveToNext()) {String name = cursor.getString(0);String number = cursor.getString(1);Map<String, String> map = new HashMap<String, String>();map.put(Phone.DISPLAY_NAME, name);map.put(Phone.NUMBER, number);data.add(map);}cursor.close();// 设置适配器lv_list_persons.setAdapter(new PersonAdapter());// 添加item的点击事件lv_list_persons.setOnItemClickListener(this);}// 添加item的点击事件@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// 取数据String number = data.get(position).get(Phone.NUMBER);Intent intent = getIntent();intent.putExtra("number", number);// 设置要回传的数据setResult(2, intent);// 关闭当前界面finish();}// 适配器private class PersonAdapter extends BaseAdapter {@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;// 如果没有视图可以复用时候,就在本activity视图动态加载视图文件if (convertView == null) {// 动态加载视图convertView = View.inflate(PersonListActivity.this,R.layout.person_item, null);viewHolder = new ViewHolder();viewHolder.tv_item_person_name = (TextView) convertView.findViewById(R.id.tv_item_person_name);viewHolder.tv_item_person_number = (TextView) convertView.findViewById(R.id.tv_item_person_number);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}// 获取值Map<String, String> map = data.get(position);viewHolder.tv_item_person_name.setText(map.get(Phone.DISPLAY_NAME));viewHolder.tv_item_person_number.setText(map.get(Phone.NUMBER));return convertView;}// 适配器的内部类class ViewHolder {public TextView tv_item_person_name;public TextView tv_item_person_number;}}
}



这篇关于getAllContants--获取手机联系人列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125361

相关文章

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

cell phone teardown 手机拆卸

tweezer 镊子 screwdriver 螺丝刀 opening tool 开口工具 repair 修理 battery 电池 rear panel 后盖 front and rear cameras 前后摄像头 volume button board 音量键线路板 headphone jack 耳机孔 a cracked screen 破裂屏 otherwise non-functiona

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

vcpkg子包路径批量获取

获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” ) import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages"

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

android两种日志获取log4j

android   log4j 加载日志使用方法; 先上图: 有两种方式: 1:直接使用架包 加载(两个都要使用); 架包:android-logging-log4j-1.0.3.jar 、log4j-1.2.15.jar  (说明:也可以使用架包:log4j-1.2.17.jar)  2:对架包输入日志的二次封装使用; 1:直接使用 log4j 日志框架获取日志信息: A:配置 日志 文

17 通过ref代替DOM用来获取元素和组件的引用

重点 ref :官网给出的解释是: ref: 用于注册对元素或子组件的引用。引用将在父组件的$refs 对象下注册。如果在普通DOM元素上使用,则引用将是该元素;如果在子组件上使用,则引用将是组件实例: <!-- vm.$refs.p will be the DOM node --><p ref="p">hello</p><!-- vm.$refs.child will be the c