Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 选择电话簿';从填充的列表视图中删除联系人_Android_Sms_Contacts_Android Contacts - Fatal编程技术网

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();