LoaderManager不从子类触发

问题描述 投票:0回答:1

我有我的MainActivity,只是实现LoaderManager

public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor>

在重写的方法中,我为new创建了一个RecycleView适配器,例如:

@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
    return NYTLoader.newNYTInstance(this);
}

@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
    NYTAdapter adapter = new NYTAdapter(cursor, this);
    adapter.setHasStableIds(true);
    mRecyclerView.setAdapter(adapter);
    int columnCount = getResources().getInteger(R.integer.list_column_count);
    StaggeredGridLayoutManager sglm =
            new StaggeredGridLayoutManager(columnCount, StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(sglm);
}

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

现在我的NYTAdapter内部我再次实施了LoaderManager

public class NYTAdapter extends RecyclerView.Adapter<NYTAdapter.ViewHolder> implements LoaderManager.LoaderCallbacks<Cursor>

要创建另一个适配器:

@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
    Log.d(TAG, "onCreateLoader: ");
    return WeatherLoader.newAllWeatherInstance(context);
}

@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
    this.cursor = cursor;

    Log.d(TAG, "onLoadFinished: ");
    WeatherAdapter adapter = new WeatherAdapter(cursor, context);
    adapter.setHasStableIds(true);
    mRecyclerView.setAdapter(adapter);
    int columnCount = context.getResources().getInteger(R.integer.list_column_count);
    StaggeredGridLayoutManager sglm =
            new StaggeredGridLayoutManager(columnCount, StaggeredGridLayoutManager.HORIZONTAL);
    mRecyclerView.setLayoutManager(sglm);

}

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

但问题是,NYTAdapter内部被覆盖的方法没有触发,我不知道为什么?

java android android-loadermanager android-loader
1个回答
0
投票

您所要做的就是在您的活动或片段上调用getLoaderManager.initLoader

© www.soinside.com 2019 - 2024. All rights reserved.