1

我在使用CursorLoader. 我需要检索给定名称的电话和电子邮件地址。

我实现了LoaderManager.LoaderCallbacks<Cursor>接口的方法。问题是我需要先从表联系人中获取contact_id,然后根据该contact_id 查询电子邮件和电话的RawContacts/Data 表。

我找不到你有多个查询的例子onCreateLoader(),通常你有 return new CursorLoader(...)。我有使用managedQuery(..)方法获取联系人 ID 并将其传递给的想法,CursorLoader但我想这不是一个好主意。有什么建议吗?

4

1 回答 1

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;
    }
    }
}
于 2012-12-17T12:35:31.657 回答