использование 2-x asynctaskloader

202
17 апреля 2017, 03:44

Использую в фрагменте загрузчик который возвращает данные с Api, хочу еще добавить реализацию одного загрузчика который будет возвращать другой тип объекта.(много лишнего кода пропустил что бы было более понятно как я использую загрузчик на данный момент).Как реализовать такую загрузку?

public class FragmentCurrentWeather extends VisibleFragment 
        implements LoaderManager.LoaderCallbacks<WeatherItem> {
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState){
   getLoaderManager().initLoader(0, null, this);
}
    @Override
    public Loader<WeatherItem> onCreateLoader(int id, Bundle args) {
      return new FetchWeatherLoader(getContext(), query);
    }
    @Override
      public void onLoadFinished(Loader<WeatherItem> loader, WeatherItem data) {
    }
    @Override
      public void onLoaderReset(Loader<WeatherItem> loader) {
    }
private static class FetchWeatherLoader extends AsyncTaskLoader<WeatherItem> {
        private String mQuery;
        public FetchWeatherLoader(Context context, String query) {
            super(context);
            mQuery = query;
        }
        @Override
        protected void onStartLoading() {
            forceLoad();
        }
        @Override
        protected void onStopLoading(){
            cancelLoad();
        }
        @Override
        public WeatherItem loadInBackground() {
            Log.i(TAG, "Load in background is start");
            return new OpenWeatherFetch().downloadCurrentForecast(mQuery);
        }
    }
}
Answer 1

Удалось решить.Не уверен что это наилучший способ но он заработал. Может кому то пригодится.

private static final int BASE_DATA_RESULT_ID = 0;
private static final int DETAIL_DATA_RESULT_ID = 1;

Инициализирую ответные реакции LoaderCallbacks:

private LoaderManager.LoaderCallbacks<List<WeatherItem>> mDetailDataLoaderListener = new LoaderManager.LoaderCallbacks<List<WeatherItem>>(){...};
private LoaderManager.LoaderCallbacks<WeatherItem> mBaseDataLoaderListener = new LoaderManager.LoaderCallbacks<WeatherItem>(){...};

Инициализация загрузчиков:

getLoaderManager().initLoader(BASE_DATA_RESULT_ID, null, mBaseDataLoaderListener);
getLoaderManager().initLoader(DETAIL_DATA_RESULT_ID, null, mDetailDataLoaderListener);
READ ALSO
this при объявлении конструктора Java

this при объявлении конструктора Java

Есть два варианта объявления конструктора:

231
Jackson не распознается

Jackson не распознается

Хочу попробовать поработать с Jackson так как много слышал, вот открыл в IntelliJ IDEA, открыл вот этот туториал

184
Java SE Look&amp;Feel не может найти класс Nimbus

Java SE Look&Feel не может найти класс Nimbus

Пользуюсь NetBeans 81 Java 1

179
Как синхронизировать две TextView

Как синхронизировать две TextView

Имеются 2 TextView: inText и outTextВ inText пишу строку, и он должен сразу же появиться в outText

178