У меня есть recyclerView , который выбирает данные из FireBase, reyclerView имеет значение по горизонтали , имея только один элемент, который потенциальный пользователь можно увидеть (какой-то читатель страницы).
Я хочу сохранить положение прокрутки рейклера, чтобы использовать его при смене поворота. Для этого я попытался увидеть, как работают разные вещи (например, scrollBy, scrollToPosition и некоторые другие), но я не могу заставить их работать, потому что они просто не влияют на recyler.
Я очень нуб, поэтому я определенно что-то не так делаю, но не могу понять, что именно.
Не могли бы вы помочь мне с этим и объяснить как можно подробнее, как это сделать? , было бы здорово.
Код, который настраивает реселлерПросмотреть:
private void SetUpPagesRecyclerView() {
pagesRecyclerView = findViewById(R.id.pagesRecycler);
pagesListAdapter = new PagesListAdapter(this, pagesList);
pagesRecyclerView.setAdapter(pagesListAdapter);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
pagesRecyclerView.setLayoutManager(linearLayoutManager);
//one item is seen
SnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(pagesRecyclerView);
/*pagesRecyclerView.getLayoutManager().scrollToPosition(linearLayoutManager.findFirstVisibleItemPosition() + 1);
//pagesRecyclerView.scrollBy(2, 0);
//!!! NO EFFECT
//linearLayoutManager.scrollHorizontallyBy(2, ,);
//pagesRecyclerView.scrollBy(10, 0);
//pagesRecyclerView.scrollToPosition(2);
//linearLayoutManager.scrollToPositionWithOffset(2, 5);*/
//current position of seen item
pagesRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == RecyclerView.SCROLL_STATE_IDLE){
//get position
page_position = ((LinearLayoutManager)pagesRecyclerView.getLayoutManager())
.findFirstVisibleItemPosition();
//set current page
currentPageTextView.setText(String.valueOf(page_position +1));
Log.d("currentId", String.valueOf(page_position + 1));
}
}
});
}
Я пытаюсь сделать: