查询所有联系人并选中显示 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 ...
随机推荐
- vue v-on:click传递动态参数
最近项目中要为一个循环列表动态传送当前点击列的数据,查了很久资料也没有一个完美的解决方案, 新手只能用vue的事件处理器与jquery的选择器做了一个不伦不类的方案,居然也能解决这个问题,作此记录留待 ...
- 51nod 1092 回文字符串【LCS】
1092 回文字符串 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符 ...
- HDU 5937 Equation(DFS+剪枝)
题目链接 Equation 给定1-9这9个数字各自的卡片数,求能构成形如$i + j = k$的等式个数 等式中$i,j,k$必须都为个位数 若两个等式中$i,j,k$不完全相等,则这两个等式为不同 ...
- 在CentOS上安装 MongoDB
安装是在线安装方式,因此必须先保证能正常上网. 安装mongodb,官方的安装文档,是在线安装方式: https://docs.mongodb.com/manual/tutorial/install- ...
- 移除array中重复的item
//move the repeated item NSInteger index = [orignalArray count] - 1; for (id o ...
- angular http ajax header
myAppModule.config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.headers.common ...
- 百科知识 ass文件如何打开
直接拖入视频即可播放 鼠标右键 用记事本打开 也有一些软件支持比如POPSUB(也比较方便调整时间轴) 如果你是说如何加载字幕的话 用VOBSUB是最好的... ASS是视频的字幕,和视频放在同一文件 ...
- java性能监控工具jps-windows
jps Lists the instrumented Java Virtual Machines (JVMs) on the target system. This command is experi ...
- react request.js 函数封装
1.request.js 函数封装 import { Toast } from 'antd-mobile'; import axios from 'axios'; import store from ...
- 【Scala类型系统】自身类型(self type)引用
定义 特质能够要求混入它的类扩展自还有一个类型,可是当使用自身类型(self type)的声明来定义特质时(this: ClassName =>).这种特质仅仅能被混入给定类型的子类其中. 如果 ...