0

Я использую recycle view в своем приложении. У меня есть одна кнопка над списком переходов в относительной компоновке для изменения менеджера макетов. Сначала он отображает диспетчер компоновки сетки и при нажатии кнопки отображает Linearlayoutmanager. В то время как я меняю менеджер компоновки, просмотр снова начинается с первой позиции.Recyclerview сохранить положение прокрутки после изменения макета

Может ли кто-нибудь помочь мне сохранить позицию, как это происходит при динамическом изменении менеджера компоновки?

+0

Пробовали ли вы 'RecyclerView # scrollToPosition (целое положение)'? – nshmura

+0

Я не хочу показывать прокрутку –

+0

scrollToPosition не показывает прокрутку. Это имя метода немного сложнее. – nshmura

ответ

3

Вы должны помнить firstVisibleItem и прокрутите эту позицию после изменения LayoutManager он работает отлично, я просто попробовал его сам:

Э.Г. Button нажмите, чтобы изменить LayoutManager:

btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int i = ((LinearLayoutManager) rcView.getLayoutManager()).findFirstVisibleItemPosition(); 
       if(rcView.getLayoutManager() instanceof GridLayoutManager) {     
        rcView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); 
       } else {      
        rcView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3)); 
       } 
       rcView.scrollToPosition(i); 
      } 
     }); 
+0

Я попробую это –

+0

Спасибо @david этот ответ полезен –