LoadManager, SimpleCursorAdapter, ViewBinder — без URI?

Я пытаюсь реализовать LoaderManager, так как для загрузки строк в мой ListView требуется некоторое время. Все примеры, которые я нашел в Интернете, ссылаются на CONTENT_URI, чего у меня нет.

Вот мой старый код для загрузки моего содержимого ListView:

  @Override
  public void onCreate( Bundle savedInstanceState )
  {
  ...
    String path = "/sdcard/mytunesdb.sqlite";   // Warning, yes, I know..

    db = SQLiteDatabase.openDatabase( path, null, 0 );

    lvCustomList = (ListView) findViewById( R.id.lv_custom_list );

    String[] columns = new String[] { "Name" };

    // THE XML DEFINED VIEWS FOR EACH FIELD TO BE BOUND TO
    int[] to = new int[] { R.id.lv_tune };  

    Cursor c = db.rawQuery( "SELECT rowid _id, Name FROM Tune ORDER BY Name", null );

    cAdapter = new MySimpleCursorAdapter( this, R.layout.like_hate_row, c, columns, to, 0 );

    viewBinder = new CustomViewBinder();

    cAdapter.setViewBinder( (ViewBinder) viewBinder );

    lvCustomList.setAdapter( cAdapter );

Итак, я начинаю реализовывать обратные вызовы LoaderManager после изменения приведенного выше кода, чтобы cAdapter создавался с нулевой проекцией (null вместо параметра «columns»). Вот как я далеко зашел. Как мне поместить мой rawQuery в метод onCreateLoader?

  @Override
  public Loader<Cursor> onCreateLoader(int id, Bundle args) 
  {
    String[] columns = new String[] { "Name" };

!!! HELP - I don't have a CONTENT_URI - my database is external - what do I put below?   
    CursorLoader cursorLoader = new CursorLoader( getActivity(),
              TutListProvider.CONTENT_URI, columns, null, null, null);

     return cursorLoader;
  }

  @Override
  public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) 
  {
    cAdapter.swapCursor( cursor );
  }

  @Override
  public void onLoaderReset(Loader<Cursor> loader) 
  {
    cAdapter.swapCursor( null );
  }

Нужно ли мне сохранить код URI и вместо этого реализовать ContentProvider для моей базы данных SQL??




Ответы (1)


Я понял это с помощью SimpleCursorLoader, упомянутого в других сообщениях StackOverlow. У меня есть новые проблемы, но по ссылке ниже вы найдете мое решение.

Мое решение

person SparkyNZ    schedule 07.07.2014