init加载程序在androidx的加载程序管理器中运行不正常

bsxbgnwa  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(230)

这个 Android Loader Manager 在最新版本的android中被弃用,所以我使用 androidx 支持库 androidx.loader.app.LoaderManager 在这样做的时候,我被困在这里。
所有的事情都是正确的,但是 initloader 方法最后一个参数显示错误。
以下是我尝试过的步骤:
此步骤显示不兼容类型的错误
所需类型: LoaderCallbacks<java.lang.Object> 提供: MainActivity ```
lm.initLoader(EARTHQUAKE_LOADER_ID, null, this);

此步骤显示 `Runtimeerror` 的 `typecasting` 就是这样 `this` 参数不能转换为 `LoaderCallbacks<java.lang.Object>` 类型。

lm.initLoader(EARTHQUAKE_LOADER_ID, null, (LoaderManager.LoaderCallbacks) this);

LoaderManager lm = LoaderManager.getInstance(this);

lm.initLoader(EARTHQUAKE_LOADER_ID, null, this);

private static final int EARTHQUAKE_LOADER_ID = 1;

public class EarthquakeActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<List<EarthQuake>> {

    @NonNull
    @Override
    public Loader<List<EarthQuake>> onCreateLoader(int id, @Nullable Bundle args) {
        //Create a new loader for the given URL
        return new EarthquakeLoader(this, USGS_REQUEST_URL);
    }

    @Override
    public void onLoadFinished(@NonNull Loader<List<EarthQuake>> loader, List<EarthQuake> earthquakes) {
        //clear the adapter of previous earthquake data
        mAdapter.clear();

        //If there is a valid list of {@link Earthquake}s then add them to the adapter,s
        // dataSet. This will trigger the listview wto update.

        if (earthquakes != null && !earthquakes.isEmpty()){
            mAdapter.addAll(earthquakes);
        }
    }

    @Override
    public void onLoaderReset(@NonNull Loader<List<EarthQuake>> loader) {
        //Loader reset, so we can clear out our existing data.
        mAdapter.clear();
    }
}
我只想知道传递到那里的正确参数是什么。请帮助我学习你的知识。
也给我一些建议,如果这将工作或我应该切换到使用 `Viewmodel` 以及 `Livedata` .
谢谢你的分享。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题