gpt4 book ai didi

android - 数据表的 Contacts.CONTENT_FILTER_URI

转载 作者:行者123 更新时间:2023-11-29 01:47:54 25 4
gpt4 key购买 nike

我的 fragment 实现了 LoaderManager.LoaderCallbacks查询 android.provider.ContactsContract.Contacts.CONTENT_URI 并返回一些数据的接口(interface)。

但由于我想要较低级别的数据(每个电话号码一行),我更改了代码以查询 android.provider.ContactsContract.Data.CONTENT_URI

由于隐式连接(如 http://developer.android.com/reference/android/provider/ContactsContract.Data.html 中所述),Contacts 类中的大部分列在 Data 类中可用。所以我所要做的就是编辑我的选择和投影字符串以替换“联系人”。与“数据”。

例如,Contacts.DISPLAY_NAME_PRIMARY 变成了 Data.DISPLAY_NAME_PRIMARY

现在唯一的问题是搜索功能。早些时候我可以使用 Contacts.CONTENT_FILTER_URI,它在 Contacts.CONTENT_URI 上启用类型到过滤器功能。

但是现在,我无法在数据类中找到 Contacts.CONTENT_FILTER_URI 的替代方案。关于如何让用户在这种情况下进行搜索的任何想法?

最佳答案

Data 类中的 Contacts.CONTENT_FILTER_URI 没有替代方案。但是通过编辑 cursorLoader 的 SELECTION 字符串可以实现相同的类型到过滤器功能。将所需的过滤条件附加到带有占位符的 SELECTION 字符串,如下所示:

@SuppressLint("InlinedApi")
String SELECTION_FILTERED =
(Utils.hasHoneycomb() ? Data.DISPLAY_NAME_PRIMARY : Data.DISPLAY_NAME) +
"<>''" + " AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE +"'" +
" AND " + (Utils.hasHoneycomb() ? Data.DISPLAY_NAME_PRIMARY : Data.DISPLAY_NAME) +
" LIKE ? ";

然后将搜索词添加到 selectionArgs(CursorLoader 构造函数的倒数第二个参数)中:

return new CursorLoader(getActivity(),
ContactsQuery.CONTENT_URI,
ContactsQuery.PROJECTION,
ContactsQuery.SELECTION_FILTERED,
new String[] {"%"+mSearchTerm+"%"},
ContactsQuery.SORT_ORDER);

每次用户在搜索框中输入一个字符时,cursorLoader 都必须重新启动:

getLoaderManager().restartLoader(
ContactsQuery.QUERY_ID, null, PhoneContactsListFragment.this);

这将确保每次发生更改时都使用新的搜索词调用构造函数。

关于android - 数据表的 Contacts.CONTENT_FILTER_URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20270618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com