查询所有联系人并选中显示 contentprovider
<!-- 读取联系人记录的权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
activity_main<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="${relativePackage}.${activityClass}" >
<EditText
android:id="@+id/et_main_number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入或选择一个联系人号码" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/et_main_number"
android:text="选择联系人"
android:onClick="toContactList"/>
</RelativeLayout>
item_contact<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="18sp"/>
<TextView
android:id="@+id/tv_item_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="18sp"
android:layout_marginLeft="10dp"/>
</LinearLayout>
activity_contact_list<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ListView>
public class MainActivity extends Activity {
private EditText et_main_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_main_number = (EditText) findViewById(R.id.et_main_number);
}
public void toContactList(View v) {
//启动联系人列表界面
startActivityForResult(new Intent(this, ContactListActivity.class), 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==1 && resultCode==RESULT_OK) {
//得到返回的number
String number = data.getStringExtra("NUMBER");
//显示
et_main_number.setText(number);
}
}
}
public class ContactListActivity extends ListActivity implements OnItemClickListener {
private ListView listView;
private ContactAdapter adapter;
private List<Map<String, String>> data = new ArrayList<Map<String,String>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_list);
listView = getListView();
adapter = new ContactAdapter();
//查询得到联系人表数据
//ContentResolver
ContentResolver resolver = getContentResolver();
//执行查询得到cursor
String[] projection = {Phone.DISPLAY_NAME, Phone.NUMBER};
Cursor cursor = resolver.query(Phone.CONTENT_URI, projection, null, null, null);
//取出其中的数据保存到data
while(cursor.moveToNext()) {
String name = cursor.getString(0);
String number = cursor.getString(1);
Map<String, String> map = new HashMap<String, String>();
map.put("name", name);
map.put("number", number);
data.add(map);
}
//显示列表
listView.setAdapter(adapter);
//给listView添加item点击监听
listView.setOnItemClickListener(this);
}
class ContactAdapter extends BaseAdapter {
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null) {
convertView = View.inflate(ContactListActivity.this, R.layout.item_contact, null);
}
Map<String, String> map = data.get(position);
TextView nameTV = (TextView) convertView.findViewById(R.id.tv_item_name);
TextView nubmerTV = (TextView) convertView.findViewById(R.id.tv_item_number);
nameTV.setText(map.get("name"));
nubmerTV.setText(map.get("number"));
return convertView;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//得到选择的号码
String number = data.get(position).get("number");
Intent intent = getIntent();
intent.putExtra("NUMBER", number);
//设置结果
setResult(RESULT_OK, intent);
//返回
finish();
}
}
查询所有联系人并选中显示 contentprovider的更多相关文章
- Android 手机卫士--获取联系人信息并显示与回显
前面的文章已经实现相关的布局,本文接着进行相关的功能实现 本文地址:http://www.cnblogs.com/wuyudong/p/5951794.html,转载请注明出处. 读取系统联系人 当点 ...
- 使用实时文件夹显示ContentProvider的数据
所谓实时文件夹(即LiveFolder),是指用于显示ContentProvider提供的数据的桌面组件. ContentProvider用于向外提供数据访问的接口,一个应用程序可通过ContentP ...
- js控制select选中显示不同表单内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 分页查询关键代码 多条件查询关键代码 删除选中商品关键代码 修改要先回显再修改 修改要先回显再修改 同一业务集中使用同一servlet的方法
分页查询关键代码: 通过servlet转发回来的各种信息进行分页的设计(转发回的信息有 分页查询的List集合 查询的页码 查询的条数 查询的数据库总条数 查询的总页码) 从开始时循环10次出现十个数 ...
- PHP--TP框架----把查询到的数据,显示在模型(模板)里面
MainController.class.php <?php namespace Home\Controller; use Think\Controller; class MainControl ...
- jsp多条件查询及查询结果在同一页面显示(原创)
第一步,建立main.jsp页面,使用frameset分上下两个框架,上部是query.jsp.下部是detail .detail显示的是showdetail.jsp的页面 <title> ...
- Saiku对Measure(指标)查询结果进行计算后显示的方法
在通过Saiku查询数据的时候,当需要改变查询结果的显示方式的时候,可以添加formatString属性,但是当需要计算查询结果的时候,则需要使用CellFormatter,使用方法如下: <M ...
- 通过RF数据库查询中文字段结果正常显示的转换方法
方法1:统一显示为中文 1.通过RF数据库查询中文字段结果格式:'\xba\xcb\xbc\xf5\xcd\xa8\xb9\xfd' 2.通过Decode Bytes To String进行gbk解码 ...
- MySql查询数据令某字段显示固定值
我们用SQL查询数据时后,基于某些原因不想看到某字段的值,比如密码,我们可以通过创建视图,忽略某一字段的值. 同时我们也可以直接通过SQL语句来让其显示某个固定值: (1)一般查询语句: SELECT ...
随机推荐
- NGINX白名单功能,ngx_http_limit_conn_module和ngx_http_limit_req_module值设置多少才合适呀?
要根据不同的应用慢慢学习测试? 我现在设置的10左右,看看再说吧... #增加限制规则,如果不能正常访问,则需要调节这两个值 -- #增加ip白名单功能 geo $whiteiplist { defa ...
- ML| EM
What's xxx The EM algorithm is used to find the maximum likelihood parameters of a statistical model ...
- down
Description 给出一个数列,求出这个序列的最长下降子序列的长度及方案数,子序列中的权值完全相同视为同一个序列 Input 第一行一个整数n,接下来一行n个整数表示序列的权值 Output 一 ...
- Cookie安全与CSRF和XSS攻击知识点收集
个人简单理解: 1.XSS最简单的理解就是可以在表单提交的内容上嵌入JS执行代码,然后页面渲染的时候没有过滤时会自动执行这个脚本. 2.CSRF可以理解为当你登录了京东,浏览器上保存了你登录的Cook ...
- SQL 列转行与行转列
假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94*/ -------------- ...
- js中多行字符串拼接
前言 我们会经常遇到这样的场景,需要拼接多行字符串,在字符串中动态插入一些数据以达到业务的需求.但是js中并没有标准的多行编辑的函数,于是聪明的程序员们便脑洞大开,书写出许多有趣的方法. 1 2 3 ...
- Android设置TextView行间距(非行高)
Android设置TextView行间距(非行高) Android系统中TextView默认显示中文时会比较紧凑,不是很美观. 为了让每行保持一定的行间距,可以设置属性android:lineSpac ...
- C#应用程序配置文件.config介绍
我们经常会希望在程序中写入一些配置信息,例如版本号,以及数据库的连接字符串等.你可能知道在WinForm应用程序中可以利用Properties.Settings来进行类似的工作,但这些其实都利用了Ap ...
- HDU1506 Largest Rectangle in a Histogram (动规)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- Eclipse 安装(Oxygen版本)
Eclipse 安装(Oxygen版本) Eclipse 最新版本 Eclipse Neon,这个首次鼓励用户使用 Eclipse Installer 来做安装,这是一种由Eclipse Oomph提 ...