gpt4 book ai didi

android - CursorLoader 结果选择

转载 作者:行者123 更新时间:2023-11-29 00:12:16 26 4
gpt4 key购买 nike

我构建了一个可以显示我所有联系人的 Android 应用程序。这是我的 Cursor 的样子:

public Cursor getAllContacts()
{
CursorLoader cl = new CursorLoader(context, ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME);
return cl.loadInBackground();
}

它工作正常,但我想构建第二个 Cursor,它只能显示我在 SharedPreferences 中设置的收藏夹。

这是我坚持的地方:

    public Cursor getFavContacts(){



SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);

Map<String, ?> allEntries = sharedPrefs.getAll();

for (Map.Entry<String, ?> entry : allEntries.entrySet()) {

if(entry.getValue() instanceof Boolean) {
Boolean isFav = (Boolean)entry.getValue();
if(isFav) {
Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());

String[] split = entry.getKey().split("_");
Log.d("splittedvalue", split[1]);
}
}
}


CursorLoader cl = new CursorLoader(context, ContactsContract.Contacts.CONTENT_URI,null,null,null,ContactsContract.Contacts.DISPLAY_NAME);


Cursor cursor = cl.loadInBackground();
if(cursor != null) {
int count = cursor.getCount();
Log.d("ContactsAdapter", "count: " + count);



}


return cl.loadInBackground();
}

我的日志只正确显示了我想要得到的结果。现在我想告诉 CursorLoader 只获取我的收藏夹。我该怎么做?

最佳答案

您应该向 CursorLoader 添加一些selection

如果您想获取手机设置的收藏夹(也就是 Android 联系人列表中的已加星标 联系人),条件将是 ContactsContract.Contacts.STARRED

如果您只想显示您在应用中挑选出的特定联系人(或在您的应用中收藏的联系人),那么我猜您已经拥有这些联系人的_IDDISPLAY_NAME 保存在您的 SharedPreferences 中,因此您将在选择标准中使用它。

例如,要显示已加星标 的联系人,您的 CursorLoader 可以如下所示:

CursorLoader cl = 
new CursorLoader(context,
ContactsContract.Contacts.CONTENT_URI,
null,
ContactsContract.Contacts.STARRED = "1"
null,
ContactsContract.Contacts.DISPLAY_NAME);

附言上面的代码我没有运行过,但是你应该可以从中掌握大概的思路。

关于android - CursorLoader 结果选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29364334/

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