Дублирование загружаемой информации в loader

292
10 июля 2017, 16:15

Загружаю разные списки с фильмами в лоадере + реализовал простой бесконечный скроллинг. Использую FragmentStatePagerAdapter для отображения разных списков. Проблема наступает когда начинаю переходить между фрагментами - начинает дублироваться загружаемая информация. 1. Как избежать дублирования информации?(повторного запуска загрузчика) 2. Как весь список загруженого?Так как при повороте сохраняется лишь последняя загруженая информация.

public class MovieFragment extends Fragment
                                    implements LoaderManager.LoaderCallbacks<List<Movie>> {
    private static final String TAG = "MovieFragment";
    private static final String SAVE_CURRENT_PAGE = "current_page";
    private static final int START_POSITION = 1;
    private final int LOADER_ID = 0;
    private RecyclerView mRecyclerView;
    private List<Movie> mMovies = new ArrayList<>();
    private MovieAdapter mMovieAdapter;
    public int mCurrentPage;
    private LoaderManager mLoaderManager;
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null){
            mCurrentPage = START_POSITION;
        }else {
            mCurrentPage = savedInstanceState.getInt(SAVE_CURRENT_PAGE);
        }
        mLoaderManager = getLoaderManager();
        startLoading();
    }
    @Override
    public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) {
        View view = inflater.inflate(R.layout.fragment_layout, container, false);
        mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        mRecyclerView.setLayoutManager(linearLayoutManager);
        EndlessRecyclerViewScrollListener recyclerViewScrollListener = new EndlessRecyclerViewScrollListener(linearLayoutManager) {
            @Override
            public void onLoadMore() {
                mCurrentPage++;
                restartLoading();
            }
        };
        mRecyclerView.addOnScrollListener(recyclerViewScrollListener);
        setupAdapter();
        return view;
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(SAVE_CURRENT_PAGE, mCurrentPage);
    }
    private void setupAdapter(){
        if (isAdded()){
            mMovieAdapter = new MovieAdapter(mMovies);
            mRecyclerView.setAdapter(mMovieAdapter);
        }
    }
    private void startLoading(){
        mLoaderManager.initLoader(LOADER_ID, null, this);
    }
    private void restartLoading(){
        mLoaderManager.restartLoader(LOADER_ID, null, this);
    }
    @Override
    public Loader<List<Movie>> onCreateLoader(int id, Bundle args) {
        return new  MovieLoader(getActivity, mCurrentPage);
    }
    @Override
    public void onLoadFinished(Loader<List<Movie>> loader, List<Movie> data) {
        if (data == null || data.isEmpty()){
            return;
        }
        mMovies.addAll(data);
        mMovieAdapter.notifyItemInserted(mMovies.size() - 1);
    }
public static class MovieLoader extends AsyncTaskLoader<List<Movie>> {
       private int mLoadPage;
        public MovieLoader(Context context, int loadPage) {
            super(context);
        mLoadPage = loadPage;
        }
        @Override
        public void onStartLoading(){
            forceLoad();
        }
        @Override
        public List<Movie> loadInBackground() {
            return new FetchMovie.getMovie(mLoadPage);
        }
    }

Пример экрана:

READ ALSO
SimpleDateFormat высчитывает даты неправильно

SimpleDateFormat высчитывает даты неправильно

Доброго времени сутокЕсть файл, от которого мне нужно узнать, насколько давно он был создан

284
Удаление дубликатов из кода

Удаление дубликатов из кода

Всем привет, такая задача, есть например какой-то код на 800+ строк который находится в текстовом файле, надо найти оттуда все повторяющиеся...

300
Панель навигации в android &lt; api 19

Панель навигации в android < api 19

Задался вопросом как сделать приложение на весь экран

309