您好我正在尝试使用asynctaskloader从msql db加载一些数据。
int customerid=0;
public void loaddata(int custId) {
customerid = custid;
getLoaderManager().initLoader(0, null, this);
}
@Override public Loader<List<AppEntry>> onCreateLoader(int id, Bundle args) {
// This is called when a new Loader needs to be created. This
// sample only has one Loader with no arguments, so it is simple.
return new AppListLoader(getActivity(),customerid);
}
@Override public void onLoadFinished(Loader<List<AppEntry>> loader, List<AppEntry> data) {
// Set the new data in the adapter.
log.d("price of item",""+data);
}
@Override public void onLoaderReset(Loader<List<AppEntry>> loader) {
// Clear the data in the adapter.
}
我从一个活动调用loaddata()方法并且每次都传递不同的客户ID,但它只给我第一次传递的旧结果。 正如我们在其他适配器中那样调用通知适配器更改。
答案 0 :(得分:2)
initLoader
只启动加载程序一次并再次调用它documentation:
如果加载器尚不存在,则创建一个加载器(如果当前启动了活动/片段),则启动加载器。否则,将重新使用上次创建的加载程序。
如果您想多次调用它,可以在其位置使用restartLoader。
答案 1 :(得分:1)
你可以试试这个,但它会在随后的尝试中重新设置加载器:
if(getSupportLoaderManager().getLoader(Consts.LOADER_2)==null)
getSupportLoaderManager().initLoader(Consts.LOADER_2, null, this);
else
getSupportLoaderManager().restartLoader(Consts.LOADER_2, null, this);