ich habe diesen Code:Wie onLoadFinished() Daten von loadInBackground() akzeptieren, wenn return Object?
public class WeatherLoader extends AsyncTaskLoader {
/** Tag for log messages */
private static final String LOG_TAG = WeatherLoader.class.getName();
private String mUrl;
private int mDataWeatherType;
public WeatherLoader(Context context, String url , int dataWeatherType) {
super(context);
mUrl = url;
mDataWeatherType = dataWeatherType;
}
@Override
public Object loadInBackground() {
Log.i(LOG_TAG , "TEST : loadInBackground() called ...");
if(mUrl == null){
return null;
}
if(mDataWeatherType == 1) {
CurrentWeather currentWeather = QueryUtils.fetchCurrentWeatherData(mUrl);
return currentWeather;
}else if(mDataWeatherType == 2) {
List<HourForecast> hourlyForecastsList = QueryUtils.fetchHourlyForecastsData(mUrl);
return hourlyForecastsList;
}else {
List<DayForecast> dailyForecastsList= QueryUtils.fetchDailyForecastsData(mUrl);
return dailyForecastsList;
}
}
}
in der Haupttätigkeit:
@Override
public Loader<List<HourForecast>> onCreateLoader(int id, Bundle args) {
return new WeatherLoader(this,mUrl,HOURLY_FORECASTS);
}
@Override
public void onLoadFinished(Loader<List<HourForecast>> loader, List<HourForecast> data) {
mHourForecastAdapter.clear();
mHourForecastAdapter.addAll(data);
}
@Override
public void onLoaderReset(Loader<List<HourForecast>> loader) {
mHourForecastAdapter.clear();
}
im AsyncTaskLoader
i nicht generischen Typen angeben, und in den LoaderManager.LoaderCallbacks<List<HourForecast>>
i generischen Typen angeben, der Code richtig funktioniert .
Könnte mir jemand erklären, wie das Ergebnis von loadInBackground
an onLoadFinished
weitergegeben wird? Ich frage dies als loadInBackground
gibt ein Objekt zurück und onLoadFinished
akzeptiert eine List<HourForecast>
und nicht eine Object
.
danke für die antwort mich und erklären einige code, jetzt das bild klar für mich (: –