RecyclerView: установите положение прокрутки, чтобы элемент отображался в нижней части представления.

У меня есть RecyclerView с LinearLayoutManager, поддерживаемым адаптером с элементами разной высоты. Есть ли способ указать RecyclerView установить положение прокрутки, чтобы элемент X отображался (более или менее) точно внизу экрана?

Я пробовал LinearLayoutManager.scrollToPosition(), но это поместит элемент в верхнюю часть представления.


person Kirill Rakhman    schedule 24.05.2016    source источник
comment
Не работает scrollToPosition()? Не уверен насчет нижней части экрана.   -  person Malith Lakshan    schedule 24.05.2016
comment
scrollToPosition() поместит элемент вверху представления. Я хочу наоборот.   -  person Kirill Rakhman    schedule 24.05.2016
comment
Надеюсь, вы могли бы прикрепить к ней информацию по этой ссылке и обойти ее. stackoverflow.com/questions/24989218/   -  person Malith Lakshan    schedule 24.05.2016


Ответы (2)


MyAdapter mAdapter;
RecyclerView recyclerView;
List<ItemData> data = new ArrayList<>();
LinearLayoutManager llm = new LinearLayoutManager(this);

попробуйте это в методе OnCreate

recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(llm);
llm.setStackFromEnd(true);
mAdapter = new MyAdapter(data, getApplication());
recyclerView.setAdapter(mAdapter);

и когда вы вставляете элемент, попробуйте это

mAdapter.notifyItemInserted(data.size() - 1);
llm.scrollToPosition(data.size() - 1);
person giannisj5    schedule 04.07.2016

Попробуйте это в mainActivity.class

 rv_journey.setAdapter(ca);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    scrollList();
                }
            }, 500);

Вот мой метод прокрутки

private void scrollList(){
        rv_journey.post(new Runnable() {
            @Override
            public void run() {
                // Call smooth scroll
                rv_journey.smoothScrollToPosition(Index);
            }
        });
    }

Установите индекс из класса адаптера, который расширяет RecyclerView.Adapter Где вам нужно прокручивать...

if (Condition) {
                        mainActivity.Index=position+1;

                    }
                } 

Удачного кодирования...

person sk sakil    schedule 23.03.2018