对我来说,如果有多个加载程序,则不清楚如何获得正确的光标。假设您定义了两个不同的Loader:
getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(1,null,this);
然后在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;
}
到目前为止,一切都很好。但是如何在onLoadFinished()中获得正确的光标,因为您没有任何ID来为正确的Cursoradapter识别正确的Cursor。
@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
还是我错了,这是在一个片段中获取两个不同的cursoradapter结果的错误方法。
这是一个非常好的问题!这是很好的要求,并且涉及一个相当细微的主题。非常具体。
—
Kurtis Nusbaum
应当指出的是,只要所有加载器的加载器返回类型都不相同,就必须使用单独的处理程序类,因为由于通用类型擦除,Java不允许您实现一个以上的接口(
—
马提亚斯(Matthias)2012年
LoaderCallbacks
在这种情况下)类型。由于这两种情况都只能在您的情况下使用,结果是Cursor
。
@Matthias伟大,您已经提到了!我只是在考虑如何让2个装载机具有不同的返回类型。那么,如果2个装载机具有2种不同的返回类型怎么办?用1个加载程序执行一项任务,而用线程执行另一项任务?
—
罗伯特
@Robert无需使用线程。您可以使用两个
—
AnV 2016年
Loader
s。请通过以下stackoverflow.com/a/20839825/2818583