layoutManager.findFirstVisibleItemPosition() с горизонтальным представлением Recycler
Я пишу приложение для Android для школьного проекта.
Я реализовал RecyclerView
с горизонтальной прокруткой с помощью LinearLayoutManager.HORIZONTAL
,
Я хотел бы сделать так, чтобы конкретный элемент, например элемент n, находился в середине набора видимых в данный момент элементов, например, так:
Я искал и нашел эту ссылку: https://www.reddit.com/r/androiddev/comments/3o0xzw/how_do_you_scroll_to_an_item_with_recyclerview_to/
Решение состояло в том, чтобы взять половину суммы layoutManager.findFirstVisibleItemPosition()
а также layoutManager.findLastVisibleItemPosition()
и добавить его в положение элемента, который вы хотите быть в середине.
Однако эти два метода всегда возвращаются RecyclerView.NO_POSITION
когда я использовал эту горизонтальную прокрутку RecyclerView
следовательно, половина суммы будет равна 0, и это сделает расчет бесполезным.
Вот мой код:
RecyclerView selectDay = (RecyclerView) findViewById(R.id.lv_selectDay);
daySelectorAdapter adapter = new daySelectorAdapter(this, arrayList);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
selectDay.setAdapter(adapter);
selectDay.setLayoutManager(layoutManager);
int firstVisible = layoutManager.findFirstVisibleItemPosition();
Log.d("FIRSTVISIBLE", String.valueOf(firstVisible)); // returns -1
int lastVisible = layoutManager.findLastVisibleItemPosition();
Log.d("LASTVISIBLE", String.valueOf(lastVisible)); // also -1
int halfScreenOffset = (lastVisible - firstVisible) / 2;
Log.d("HALFOFFSET", String.valueOf(halfScreenOffset));
layoutManager.scrollToPositionWithOffset((15 + halfScreenOffset), 0);
Могу ли я узнать, есть ли у кого-нибудь решение этой проблемы? Заранее спасибо.
РЕДАКТИРОВАТЬ: Когда я пытался реализовать onScrollListener
и бросить recyclerView.getLayoutManager()
в LinearLayoutManager
эти методы работали отлично. Могу я узнать почему?
РЕДАКТИРОВАТЬ 2:
Я использовал это решение прямо здесь: RecyclerView smoothScroll для позиционирования в центре. android, однако почему методы возвращаются NO_POSITION
?