0

こんにちは、 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 を渡していますが、最初に渡した古い結果しか得られません。他のアダプターと同様に、通知アダプターの変更と呼ばれるものがあります。

4

2 に答える 2

2

initLoaderローダーを1回だけ起動し、それを再度呼び出すと、ドキュメントごとに何もしません:

ローダーがまだ存在しない場合は、ローダーが作成され、(アクティビティ/フラグメントが現在開始されている場合) ローダーが開始されます。それ以外の場合は、最後に作成されたローダーが再利用されます。

複数回呼び出す場合は、代わりにrestartLoaderを使用します。

于 2013-05-27T17:20:08.370 に答える