【问题标题】:public Loader<Cursor> onCreateLoader(int id, Bundle args) method calling with several CursorLoaderpublic Loader<Cursor> onCreateLoader(int id, Bundle args) 使用多个 CursorLoader 调用的方法
【发布时间】:2016-05-09 15:15:57
【问题描述】:

TASK:我想显示一个ListView列表,当你选择一个项目时显示对话列表并显示在另一个元素列表中(父元素和子元素)

  static class GroupCursorLoader extends CursorLoader {
    DB db;

    public GroupCursorLoader(Context context, DB db) {
        super(context);
        this.db = db;
    }

    @Override
    public Cursor loadInBackground() {
        Cursor cursor = db.getGroupAll();

        return cursor;
    }
}


static class DetailCursorLoader extends CursorLoader{
    DB db;

    public DetailCursorLoader(Context context, DB db) {
        super(context);
        this.db = db;
    }

    @Override
    public Cursor loadInBackground() {
        Cursor cursor;
        cursor = db.getDetailAll();

        return cursor;
    }
}

现在,问题是,如何处理这两个Cursor?,即写成以下方法

public Loader onCreateLoader(int id, Bundle args)

public void onLoadFinished(Loader loader, Cursor data)

public void onLoaderReset(Loader loader)

  @Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
   
    return return new GroupCursorLoader(this, mDB);
}

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

@Override
public void onLoaderReset(Loader<Cursor> loader) {
    Log.d(LOG, "onLoadReset");
}

【问题讨论】:

标签: android android-cursorloader


【解决方案1】:
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
      if(id == GROUP_LOADER_ID) {
        return new GroupCursorLoader(this, mDB);       
      } else {
        return new DetailCursorLoader(this, mDB);
      }
    }

   @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
      if(loader instanceof GroupCursorLoader) {
        scAdapterForGroup.swapCursor(data);
      } else {
        scAdapterForDetails.swapCursor(data);
      }
   }

   @Override
   public void onLoaderReset(Loader<Cursor> loader) {
    Log.d(LOG, "onLoadReset");
   }

Answer question at ru.stackoverflow.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2016-06-19
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多