AsyncTaskLoader没有改变值

时间:2013-05-27 16:52:59

标签: android android-layout android-asynctask

您好我正在尝试使用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,但它只给我第一次传递的旧结果。 正如我们在其他适配器中那样调用通知适配器更改。

2 个答案:

答案 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);