Есть ли способ на новом компоненте навигации на спине нажата, чтобы восстановить состояние на просмотрщик
Что я использую:
- MVP
- Компонент навигации
- Одиночная деятельность
- Фрагменты
- RecyclerView
- область
Проблема:
У меня есть MainActivity, которая содержит все фрагменты для потока приложения.
Есть один фрагмент, который имеет обзор переработчика, чем больше я прокручиваю, тем больше запросов API делается. Всякий раз, когда я нажимаю один элемент, чтобы перейти к другому фрагменту, и нажимаю назад, чтобы вернуться к списку, в списке есть только небольшая часть предыдущего загруженного просмотра переработчика, я хочу все.
Возможно ли это сделать с помощью компонента навигации?
Могу ли я предотвратить вызов onCreateView при каждом нажатии?
Я пытался сохранить представление в статической переменной, иметь onSaveInstance (но он никогда не вызывается)
Я использую навигацию таким образом:
@Override
public void onClick(View view) {
Navigation.findNavController(view)
.navigate(R.id.action_tripsFragment_to_tripDetailsFragment, bundle);
}
MainFragment:
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.trips_fragment, container, false);
mPresenter = new TripsFragmentPresenterImpl(this);
ButterKnife.bind(this, v);
navController = Navigation.findNavController(getActivity(), R.id.nav_host_fragment);
mLinearLayoutManager = new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false);
mAdapter = new PaginationAdapter(getContext());
mAdapter.setOnItemClickListener(onItemClickListener);
mPresenter.setLoadingTripsProgressBar(true);
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnScrollListener(new PaginationScrollListener(mLinearLayoutManager) {
@Override
protected void loadMoreItems() {
isLoading = true;
currentPage += 1;
loadNextPage();
}
@Override
public int getTotalPageCount() {
return currentPage;
}
@Override
public boolean isLoading() {
return isLoading;
}
});
loadFirstPage();
return v;
}
Что я ожидаю:
Всякий раз, когда я возвращаюсь из TripDetails в Trips, я хочу, чтобы мой обзор переработчика был таким, каким был предыдущий загруженный элемент в правильном положении.
Текущие результаты:
Всякий раз, когда я возвращаюсь из TripDetails в Trips, представление переработчика обрезает элементы только до видимых элементов, что означает, что мы потеряем элементы, ранее загруженные на предыдущих страницах.
1 ответ
Для дальнейшего использования мне удалось решить эту проблему, создав ModelView, чтобы данные не зависели от жизненного цикла фрагмента.