我在我的应用程序中实现了一个加载器,用于从数据库中查询数据。我通过实现监听器来监听发生的变化LoaderCallbacks<Cursor>
。我遇到的问题是onLoaderReset(Loader<Cursor> loader)
当我的数据更改并且我想使与加载程序关联的任何数据无效并释放时使用该方法时。在所有示例中,在此方法中都有以下调用:
mAdapter.swapCursor(null);
但问题是我不在适配器中使用来自游标的数据,而是在我的应用程序中以其他方式使用它。
(例如,直接从返回的光标中onLoadFinished(Loader<Cursor> loader, Cursor data)
)
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (data.moveToFirst()) {
TOTAL_CARDS = data.getCount();
mView.createCards(TOTAL_CARDS);
} else {
TOTAL_CARDS = 0;
mView.createCards(TOTAL_CARDS);
}
}
在这里要做的相应的事情是什么,与mAdapter.swapCursor
. 我对装载机没有太多经验,实际上我刚开始使用它们,所以如果有人对此有解决方案,我将不胜感激。谢谢!
编辑:现在,我将 null 传递给加载器,它可以工作,如下所示:
@Override
public void onLoaderReset(Loader<Cursor> loader) {
loader = null;
}
};
但这是正确的解决方案吗?