这个 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` .
谢谢你的分享。
暂无答案!
目前还没有任何答案,快来回答吧!