首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在屏幕旋转时保持recyclerView的滚动位置

在屏幕旋转时保持RecyclerView的滚动位置需要以下步骤:

  1. 在Activity的onSaveInstanceState()方法中保存当前RecyclerView的滚动位置。可以通过调用getLayoutManager().onSaveInstanceState()方法获取当前LayoutManager的状态,并将其保存到Bundle中。
  2. 在Activity的onCreate()方法中恢复RecyclerView的滚动位置。在恢复布局之后,可以通过调用getLayoutManager().onRestoreInstanceState()方法,并传入之前保存的状态来恢复RecyclerView的滚动位置。

以下是示例代码:

代码语言:txt
复制
public class MyActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private RecyclerView.Adapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerView);

        // 设置布局管理器
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);

        // 设置适配器
        adapter = new MyAdapter(data);
        recyclerView.setAdapter(adapter);

        // 恢复RecyclerView的滚动位置
        if (savedInstanceState != null) {
            Parcelable state = savedInstanceState.getParcelable("recycler_state");
            recyclerView.getLayoutManager().onRestoreInstanceState(state);
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        
        // 保存RecyclerView的滚动位置
        Parcelable state = recyclerView.getLayoutManager().onSaveInstanceState();
        outState.putParcelable("recycler_state", state);
    }
}

在上面的代码中,我们将RecyclerView的滚动位置保存到Bundle中,并在恢复布局后将其恢复到RecyclerView中。

推荐使用腾讯云的产品腾讯云云服务器(CVM)作为云计算平台。腾讯云云服务器(CVM)是一种灵活可扩展的云计算基础设施,为用户提供高性能的虚拟机实例,可以满足各种不同规模和需求的应用场景。

腾讯云云服务器产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券