gpt4 book ai didi

android - RecyclerView 在旋转时为空

转载 作者:行者123 更新时间:2023-11-29 23:40:21 29 4
gpt4 key购买 nike

我从这里学到了如何防止在方向改变时重启 How to avoid restarting activity when orientation changes on Android

因此我实现了它

在我的 list 中,我确保旋转不会触发重启

android:configChanges="keyboardHidden|orientation|screenSize"

我的布局很简单

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scroll">

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_of_items"/>

</ScrollView>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/add"
android:layout_alignParentBottom="true"/>

</RelativeLayout>

在我设置的 MainActivity 中

@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_main);
}


@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

RecyclerView itemsView = findViewById(R.id.list_of_items);
itemsView.setLayoutManager(new LinearLayoutManager(this));
itemsView.setNestedScrollingEnabled(false);

ItemsAdapter items = new ItemsAdapter(this);
itemsView.setAdapter(items);
}

每当发生旋转时,我都会在 onConfigurationChanged 中检查项目计数和可见性状态,并且日志打印出回收器 View 是可见的并且它包含 x 个项目,但不知何故在旋转时它永远不会显示这些项目。我错过了什么?我的 ItemsAdapter 是一个非常简单的适配器,内部没有任何花哨的东西。

最佳答案

通过在 onConfigurationChanged() 中使用 setContentView(R.layout.activity_main),基本上每次旋转设备时都会创建新 View 。但是对于您在 onCreate() 中找到的 View ,您只需设置一次适配器。从 onConfigurationChanged() 中删除这一行应该可以解决您的问题。

顺便说一句,您很可能需要 ScrollView,RecyclerView 会处理它自己的滚动。

关于android - RecyclerView 在旋转时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51920757/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com