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 ?

0 ответов

Другие вопросы по тегам