编写一个程序,查询系统联系人的姓名和联系方式,结果按姓名升序排列;并使用ListView(或RecyclerView)展示系统中所有联系人的列表信息。
时间: 2024-11-14 19:22:53 浏览: 3
在Android应用程序中,要编写一个显示系统联系人列表的程序,你需要遵循以下步骤:
1. **获取权限**:
首先,在`AndroidManifest.xml`文件中添加读取联系人权限:
```xml
<uses-permission android:name="android.permission.READ_CONTACTS" />
```
2. **访问联系人数据**:
使用`ContactsContract` API 查询联系人数据,例如`CursorAdapter`可以帮助你在数据库中获取和操作数据:
```java
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
```
3. **创建适配器**:
创建一个自定义的`ArrayAdapter`或`CursorAdapter`,用于将联系人信息映射到`ListView`或`RecyclerView`的条目:
```java
List<Contact> contactsList = new ArrayList<>();
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Contact contact = new Contact(name, number);
contactsList.add(contact);
}
ArrayAdapter<Contact> adapter = new ContactListAdapter(this, R.layout.item_contact, contactsList);
```
4. **设置视图**:
将适配器应用到`ListView`或`RecyclerView`上:
```java
ListView listView = findViewById(R.id.listView);
listView.setAdapter(adapter);
// 或者如果是RecyclerView
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
```
5. **注意性能**:
如果联系人数量较大,可以考虑使用`CursorLoader`或者`Paging Library`来进行分页加载。
6. **接触界面元素**:
在`item_contact.xml`布局文件中设计每个联系人的显示模板,包括姓名和电话号码。
阅读全文