Kay*_*den 116 android android-loadermanager android-loader
对我来说,如果您有多个装载机,如何获得正确的光标并不清楚.让我们说你定义了两个不同的Loader:
getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(1,null,this);
Run Code Online (Sandbox Code Playgroud)
然后在onCreateLoader()中你根据id做不同的事情:
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
if (id==0){
CursorLoader loader = new CursorLoader(getActivity(),
MaterialContentProvider.CONTENT_URI,null,null,null,null);
}else{
CursorLoader loader = new CursorLoader(getActivity(),
CustomerContentProvider.CONTENT_URI,null,null,null,null);
};
return loader;
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是如何在onLoadFinished()中获得正确的光标,因为你没有得到任何id来识别正确的Cursoradapter光标.
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
mycursoradapter1.swapCursor(cursor);
if(isResumed()){
setListShown(true);
}else {
setListShownNoAnimation(true);
}
}
//and where to get the cursor for mycursoradapter2
Run Code Online (Sandbox Code Playgroud)
或者我错了,这是在一个片段中获得两个不同cursoradapter的结果的错误方法.
Igo*_*sky 32
使用Loader 的getId()方法:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
switch (loader.getId()) {
case 0:
// do some stuff here
break;
case 1:
// do some other stuff here
break;
case 2:
// do some more stuff here
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你的加载器没有任何共同点但是结果的类类型(这里:) Cursor
,你最好创建两个独立的LoaderCallbacks
实例(简单地作为Activity/Fragment中的两个内部类),每个实例专用于一个加载器处理,而不是而不是试图将苹果与橙子混合.
在您的情况下,似乎数据源和结果处理都不同,这要求您编写额外的样板代码以识别当前场景并将其分派到适当的代码块.
归档时间: |
|
查看次数: |
27292 次 |
最近记录: |