我在使用CursorLoader
时遇到了问题。我需要检索给定名称的电话和电子邮件地址。
我实现了LoaderManager.LoaderCallbacks<Cursor>
接口的方法。问题是我需要首先从表联系人获取contact_id,然后基于该contact_id我需要查询RawContacts / Data表以获取电子邮件和电话。
我找不到onCreateLoader()
中有多个查询的示例,通常您返回new CursorLoader(...)
。我知道使用managedQuery(..)
方法来获取联系人ID并将其传递给CursorLoader
,但我想这不是个好主意。有什么建议吗?
答案 0 :(得分:2)
在OnCreateLoader中,有一个id参数可用于更改CursorLoader。
您可以执行类似
的操作onCreateLoader(int id, bundle args) {
switch(id) {
case FETCH_CONTACT_ID: {
//Return CursorLoader for fetching contactID
break;
}
case FETCH_CONTACT_INFO: {
//Return CursorLoader for fetching raw contacts
break;
}
}
}
OnLoadFinished(Loader loader, Cursor c) {
switch(loader.getId()) {
case FETCH_CONTACT_ID: {
//Contact IDs have been fetched, so start fetching raw contact data
//Enter the IDs you want to fetch data for in the bundle which will be passed to onCreateLoader()
mLoaderManager().restartLoader(FETCH_CONTACT_INFO, args);
break;
}
case FETCH_CONTACT_INFO: {
//Raw contact info has been fetched, do whatever you want with it
break;
}
}
}