Android 选择电话簿';从填充的列表视图中删除联系人
您好,我有以下代码,基本上是填充一个电话的联系人列表,并显示在列表视图中Android 选择电话簿';从填充的列表视图中删除联系人,android,sms,contacts,android-contacts,Android,Sms,Contacts,Android Contacts,您好,我有以下代码,基本上是填充一个电话的联系人列表,并显示在列表视图中 listView = (ListView) layout.findViewById(R.id.listView); // GET PHONE BOOK'S CONTENT cursor = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
listView = (ListView) layout.findViewById(R.id.listView);
// GET PHONE BOOK'S CONTENT
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
null,
null,
null);
startManagingCursor(cursor);
String [] entries = {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID
};
int [] temp = {
android.R.id.text1,
android.R.id.text2
};
SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(mContext,
android.R.layout.simple_list_item_2,
cursor, entries, temp);
listView.setAdapter(listAdapter);
if(listView != null){
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Log.w("TAG", "SELECTING: " + listView.getAdapter().getItem(position).toString());
/*
Intent i = new Intent(android.content.Intent.ACTION_VIEW,
Uri.fromParts("sms", listView.getAdapter().getItem(position).toString(), null));
i.putExtra("sms_body", "Some message goes here.");
i.setType("vnd.android-dir/mms-sms");
startActivity(i);
*/
}
});
}
listView=(listView)layout.findviewbyd(R.id.listView);
//获取电话簿的内容
cursor=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,
无效的
无效的
无效的
无效);
开始管理游标(游标);
字符串[]项={
Contacts contract.CommonDataTypes.Phone.DISPLAY\u NAME,
Contacts contract.CommonDataTypes.Phone.NUMBER,
ContactsContract.CommonDataTypes.Phone.\u ID
};
int[]温度={
android.R.id.text1,
android.R.id.text2
};
SimpleCursorAdapter listAdapter=新的SimpleCursorAdapter(mContext,
android.R.layout.simple\u list\u item\u 2,
光标、条目、温度);
setAdapter(listAdapter);
如果(listView!=null){
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
Log.w(“标记”,“选择:”+listView.getAdapter().getItem(位置).toString());
/*
意图i=新意图(android.content.Intent.ACTION\u视图,
fromParts(“sms”,listView.getAdapter().getItem(position.toString(),null));
i、 putExtra(“sms_body”,“此处有消息”);
i、 setType(“vnd.android目录/mms短信”);
星触觉(i);
*/
}
});
}
我想做的是输出联系人的姓名以及相关的电话号码(主要号码)。因此,我可以创建一个新的意图,其中sms文本消息已根据电话号码和联系人姓名预定义
有人能告诉我怎么做吗?谢谢listView=(listView)findViewById(R.id.listView1)
ArrayList listOfName=new ArrayList();
ArrayList listOfNumber=新的ArrayList();
游标=空;
试一试{
游标=getApplicationContext().getContentResolver().query(
Phone.CONTENT\u URI,null,null,null,
Phone.DISPLAY_NAME+“ASC”);
int contactIdIdx=cursor.getColumnIndex(电话号码);
int nameIdx=cursor.getColumnIndex(Phone.DISPLAY\u NAME);
int phoneNumberIdx=cursor.getColumnIndex(Phone.NUMBER);
cursor.getColumnIndex(Phone.PHOTO\u ID);
cursor.moveToFirst();
做{
cursor.getString(contactIDIX);
String name=cursor.getString(nameIdx);
String phoneNumber=cursor.getString(phoneNumberIdx);
添加(名称);
添加(电话号码);
}while(cursor.moveToNext());
}捕获(例外e){
e、 printStackTrace();
}最后{
如果(光标!=null){
cursor.close();
}
}
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,listOfName);
setAdapter(适配器);
如果(listView!=null){
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
字符串selectedFromList=(字符串)(listView.getItemAtPosition(位置));
Toast.makeText(getApplicationContext(),selectedFromList,Toast.LENGTH_SHORT).show();
}
});
}
您要做的就是将这一行放在您的列表中(单击项目列表):
而不是
Log.w("TAG", "SELECTING: " + listView.getAdapter().getItem(position).toString());
要实现您的要求,可以通过以下方式完成: 创建一个SetTargeter类并将这些内容放入其中,而不是放入[String array]
String [] entries = {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID}
然后为该Setter-Getter类创建一个ArrayList,并在用数据填充该Setter-Getter类后将其添加到该ArrayList中
将此ArrayList传递给适配器类
在您的听者中,您可以有如下电话和姓名:
Your_ArrayList.get(position).getName();
Your_ArrayList.get(position).getPhoneNumber();
你就完了。
这很难理解,但如果您尝试一步一步地实现我提到的目标,您将实现您的目标。谢谢,但我认为您误解了我的意思。我正在尝试输出(即在Logcat上显示)在listview上单击的项目的名称和电话号码。您好,您建议的解决方案与我的类似。我想做的不是将联系人作为对象获取,而是获取该对象的名称(字符串)和电话号码(字符串)。
**Edited**
String [] entries = {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID}
Your_ArrayList.get(position).getName();
Your_ArrayList.get(position).getPhoneNumber();