Recyclerview在更改布局后保持滚动位置

时间:2016-07-27 11:12:28

标签: android android-layout android-recyclerview recycler-adapter

我在我的应用程序中使用循环视图。我在相对布局中的循环视图上方有一个按钮,用于更改布局管理器。它首先显示网格布局管理器,单击按钮时会显示Linearlayoutmanager。当我更改布局管理器时,再循环视图再次从第一个位置开始。

在布局管理器动态更改时,有人可以帮我保持位置吗?

1 个答案:

答案 0 :(得分:3)

你必须记住firstVisibleItem并在更改LayoutManager后滚动到该位置它工作正常我自己试了一下:

E.g。 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);
           }
       });