1

の使用に問題がありますCursorLoader。名前の電話番号とメールアドレスを取得する必要があります。

LoaderManager.LoaderCallbacks<Cursor>インターフェイスのメソッドを実装しました。問題は、最初にテーブルの連絡先からcontact_idを取得する必要があり、次にそのcontact_idに基づいて、RawContacts/Dataテーブルに電子メールと電話を照会する必要があることです。

に複数のクエリがある例は見つかりません。onCreateLoader()通常はreturnがありnew CursorLoader(...)ます。メソッドを使用してmanagedQuery(..)連絡先のIDを取得し、それを渡すことを考えてCursorLoaderいますが、これは良い考えではないと思います。なにか提案を?

4

1 に答える 1

2

OnCreateLoaderには、CursorLoaderを変更するために使用できるidパラメーターがあります。

あなたは次のようなことをすることができます

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 に答える