android - 仅显示一定数量的联系人

标签 android android-recyclerview android-contentprovider android-contacts android-contentresolver

我开发了一个程序,可以显示我电话簿中的联系人列表。 为此,我使用以下代码:

    ContentResolver cr = getContentResolver();
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null,
            ContactsContract.Contacts.HAS_PHONE_NUMBER + " = '1'",
            null,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
    if (cursor != null && cursor.getCount() > 0) {
        while (cursor.moveToNext()) {
            String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
           Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(id)); 
            Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id,
                    null,
                    null);
            if (phones != null) {
                    while (phones.moveToNext()) {
                        String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                        contactList.add(new Contact(name, phoneNumber, id));
                    }

                phones.close();
            }
        }
        cursor.close();
    }
    adapter = new ContactAdapter(contactList, R.layout.contacts_list_item, getApplicationContext());
    recyclerView.setAdapter(adapter);

一切正常,程序显示了我电话簿中的所有联系人,但我希望显示一定数量的联系人例如: 我打开程序并加载电话簿中的前 50 个联系人,滚动后,接下来的 50 个联系人被加载到列表的末尾。等等

最佳答案

使用以下具有限制原因的代码。用下面的代码替换你的代码

Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null,
            ContactsContract.Contacts.HAS_PHONE_NUMBER + " = '1' ",
            null,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC LIMIT 10");

它将获取前 10 条记录。并在下拉刷新实现中,获取更多关于下拉刷新回调事件的记录。希望对你有帮助

关于android - 仅显示一定数量的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631502/

相关文章:

android - 通过我的应用程序连接到互联网

Android AlertDialog 标题字体

android - ProgressDialog.dismiss() 显示时出现 IllegalArgumentException

android - Smack 以 XML 格式接收消息,我可以将它们更改为 JSON 吗?

android - 我可以在 Android 的 Settings.NameValueTable 内容提供者中添加/检索/删除条目吗?

android - 自定义 ContentProvider 建议未显示

java - 替换ListView的 'column'中的数据

java - 在平板电脑方向更改应用程序崩溃

android - Android中onViewRecycled、onDetachedFromRecyclerView、onViewDetachedFromWindow的区别

android - RecyclerView 何时使用 ItemDecoration 与 onBindViewHolder