我正在开发一个应用程序,我需要在其中向用户显示所有联系人。应该为用户提供选择多个联系人的选项,当他按下完成时,所有联系人都必须存储在数据库中。
任何人都可以帮助我显示和提取所选联系人的代码吗??{即使同名有多个 no,也必须选择一个 no }
如果您可以让所选联系人的姓名显示在敬酒中{我将自己做数据库部分},我将不胜感激......
请帮助.......
我正在开发一个应用程序,我需要在其中向用户显示所有联系人。应该为用户提供选择多个联系人的选项,当他按下完成时,所有联系人都必须存储在数据库中。
任何人都可以帮助我显示和提取所选联系人的代码吗??{即使同名有多个 no,也必须选择一个 no }
如果您可以让所选联系人的姓名显示在敬酒中{我将自己做数据库部分},我将不胜感激......
请帮助.......
您需要创建自己的联系人列表视图,CHOICE_MODE_MULTIPLE
并将 aCheckTextView
用于单个项目布局。下面是一个完整的例子。它在操作栏上有“完成”按钮。
public class PickContactsActivity extends ListActivity {
private SimpleCursorAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getListView().setItemsCanFocus(false);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME},
null, null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC");
mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_multiple_choice,
cursor,
new String[] { ContactsContract.Contacts.DISPLAY_NAME },
new int[] { android.R.id.text1 }, 0);
setListAdapter(mAdapter);
}
private List<Uri> pickContacts() {
SparseBooleanArray a = getListView().getCheckedItemPositions();
List<Uri> contacts = new ArrayList<Uri>();
for (int i=0; i<a.size(); i++) {
if (a.valueAt(i)) {
Cursor c = (Cursor)mAdapter.getItem(a.keyAt(i));
Long id = c.getLong(c.getColumnIndex(ContactsContract.Contacts._ID));
contacts.add(ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id));
}
}
return contacts;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_pick:
List<Uri> contacts = pickContacts();
StringBuilder sb = new StringBuilder("Selected Contacts\n");
for(Uri c : contacts)
sb.append(c).append("\n");
Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
完成动作在res /menu/main.xml中定义
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_pick" android:showAsAction="ifRoom" android:title="Done"/>
</menu>
最后,确保您有读取联系人的权限。将此添加到AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CONTACTS"/>
只需删除显示 Toast 消息的代码并使用 Uri 列表执行您的数据库操作。