我在RecyclerView中实施分页,所以在每次'之后n' items,onScroll()调用抽象loadMore(),它在MainActivity中的匿名类中实现,如下所示。 然后loadMore()调用我的AsyncTaskLoader来加载项目。 LoaderManager.LoaderCallBacks在MainActivity上设置。 然后在onLoadFinished()中,我调用了adapter.addItems(List newItems),但是在这个方法中抛出了CME。
这是MainActivity
public class MainActivity ... implements LM.LC{
//this gets initiliase in onCreate() - activity = this;
MainActivity activity;
//RecyclerView's adapter
CustomAdapter adapter;
...
someMethod() {
...
adapter.addOnScrollListener(new ScrolListener() {
...
@Override
loadMore() {
...
loaderManager.restartLoader(id,null,activity);
}
});
}
@Override
public Loader onCreateLoader() {
return new DataLoader(params);
}
@Override
public void onLoadFinished(params) {
adapter.addItems(List<String> someData);
}
}
这是CustomAdapter
public class CustomAdapter ... {
/*this is list in which data is to be added and
onBindViewHolder() populates view's data from it
*/
List<String> data;
...
addItems(List<String> someData) {
//first I tried this
data.addAll(someData);
//then even I tried this
ListIterator<String> it = data.listIterator();
for(Iterator<String> it1 = someData.listItertor();
it1.hasNext(); ) {
it.add(it1.next());
}
notifyItem...();
}
}
这是我的DataLoader
class DataLoader extends AsyncTaskLoader {
...
DataLoader(someParams) {
...
//some initialization
...
}
...loadInBackground() { ... }
}
但这两种方法都会引发CME。
我在网上搜索但找不到任何有用的信息。