Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6592805
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T17:36:07+00:00 2026-05-25T17:36:07+00:00

Here it says that SimpleCursorAdapter ‘s API level 1 constructor is deprecated and the

  • 0

Here it says that SimpleCursorAdapter‘s API level 1 constructor is deprecated and the use of LoaderManager and CursorLoader is recommended.

But delving into the LoaderManager and CursorLoader‘s use I found this example where inside an inner class that extends a ListFragment (an extension of Fragment itself I suppose) we create a CursorLoader. Everything seems ok, except for the fact that CursorLoader takes a Uri as an argument. So this implies that I need to create a ContentProvider to get access to my database.

I must confess it looks like an overkill to have to go through all of this just to create a simple ListView with items coming from a database. Specially if I have no intention of making my database data available to other apps, and the main purpose of a content provider is to do that.

So is it really worth it?

Especially in cases like mine where the content to be fetched is likely going to be small. I’m seriously considering doing it the old way, what do you say?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T17:36:08+00:00Added an answer on May 25, 2026 at 5:36 pm

    I wrote a simple CursorLoader that does not need a content provider:

    import android.content.Context;
    import android.database.Cursor;
    import android.support.v4.content.AsyncTaskLoader;
    
    /**
     * Used to write apps that run on platforms prior to Android 3.0. When running
     * on Android 3.0 or above, this implementation is still used; it does not try
     * to switch to the framework's implementation. See the framework SDK
     * documentation for a class overview.
     *
     * This was based on the CursorLoader class
     */
    public abstract class SimpleCursorLoader extends AsyncTaskLoader<Cursor> {
        private Cursor mCursor;
    
        public SimpleCursorLoader(Context context) {
            super(context);
        }
    
        /* Runs on a worker thread */
        @Override
        public abstract Cursor loadInBackground();
    
        /* Runs on the UI thread */
        @Override
        public void deliverResult(Cursor cursor) {
            if (isReset()) {
                // An async query came in while the loader is stopped
                if (cursor != null) {
                    cursor.close();
                }
                return;
            }
            Cursor oldCursor = mCursor;
            mCursor = cursor;
    
            if (isStarted()) {
                super.deliverResult(cursor);
            }
    
            if (oldCursor != null && oldCursor != cursor && !oldCursor.isClosed()) {
                oldCursor.close();
            }
        }
    
        /**
         * Starts an asynchronous load of the contacts list data. When the result is ready the callbacks
         * will be called on the UI thread. If a previous load has been completed and is still valid
         * the result may be passed to the callbacks immediately.
         * <p/>
         * Must be called from the UI thread
         */
        @Override
        protected void onStartLoading() {
            if (mCursor != null) {
                deliverResult(mCursor);
            }
            if (takeContentChanged() || mCursor == null) {
                forceLoad();
            }
        }
    
        /**
         * Must be called from the UI thread
         */
        @Override
        protected void onStopLoading() {
            // Attempt to cancel the current load task if possible.
            cancelLoad();
        }
    
        @Override
        public void onCanceled(Cursor cursor) {
            if (cursor != null && !cursor.isClosed()) {
                cursor.close();
            }
        }
    
        @Override
        protected void onReset() {
            super.onReset();
    
            // Ensure the loader is stopped
            onStopLoading();
    
            if (mCursor != null && !mCursor.isClosed()) {
                mCursor.close();
            }
            mCursor = null;
        }
    }
    

    It only needs the AsyncTaskLoader class. Either the one in Android 3.0 or higher, or the one that comes with the compatibility package.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I was going to use Zend_Cache, but it says here that it's not the
I'm getting an error here that says I haven't defined a method, but it
While designing a table my colleague here says that I should avoid identity column
I recently found a log statement in my projects codebase that says here i
I was wondering about the last constructor for std::string mentioned here . It says:
OK, I don't think the title says it right... but here goes: I have
Sorry for the confusing title, but it basically says it all. Here's the structures
It says here that The unbounded array is similar to a std::vector in that
I have a feeling that I'm missing something simple here but can't seem to
It says here that -Xss is used to set thread stack size, what does

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.