我在我的应用程序中使用循环视图。我在相对布局中的循环视图上方有一个按钮,用于更改布局管理器。它首先显示网格布局管理器,单击按钮时会显示Linearlayoutmanager。当我更改布局管理器时,再循环视图再次从第一个位置开始。
在布局管理器动态更改时,有人可以帮我保持位置吗?
答案 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);
}
});