使用Loader加载不同的数据

时间:2017-06-24 10:31:44

标签: java android loader

该片段的抽象类将继承其他片段。它们都是相同的,除了一件事 - 它们将加载不同的数据。

public abstract class MovieFragment extends Fragment
                                        implements LoaderManager.LoaderCallbacks<List<Movie>> {

protected abstract List<Movie> getMovies(int currentPage);

//fragment implementation body

private static class MovieLoader extends AsyncTaskLoader<List<Movie>> {

        public MovieLoader(Context context) {
            super(context);
        }

        @Override
        protected void onStartLoading() {
            forceLoad();
        }

        @Override
        protected void onStopLoading(){
            cancelLoad();
        }

        @Override
        public List<Movie> loadInBackground() {
            return getMovies(3);
        }
      }
    }

尝试过这样,但由于MovieLoader应该是静态的,因此无法使用getMovies(int currentPage)。建议如何实施? 继承抽象类MovieFragment的类的实现(例如):

public class PopularMovieFragment extends MovieFragment {

    public static Fragment getInstance(){
        return new PopularMovieFragment();
    }

    @Override
    protected List<Movie> getMovies(int currentPage) {
        return new MovieFetch().getPopularMovies();
    }
}

0 个答案:

没有答案