onCreateLoader()方法中的几个游标

时间:2012-12-17 12:12:12

标签: android android-cursorloader

我在使用CursorLoader时遇到了问题。我需要检索给定名称的电话和电子邮件地址。

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

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

1 个答案:

答案 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;
    }
    }
}