我一直使用// App delegate
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
// View controller
-(UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
,并且在ListView
范围内,我使用ScrollView
方法根据列表中的项目数设置高度。
现在我正在使用setListViewHeightBasedOnItems
,但这种设置高度的方法不再起作用,我应该如何在RecyclerView
内使用RecyclerView
?
答案 0 :(得分:1)
关于RecyclerView
的一个好处是,当ListView
或RecyclerView
不适合在特定情况下使用时,它会更加清晰。
RecyclerView
旨在回收不在屏幕上的视图,以提高滚动效率。如果您希望一组视图的容器的高度等于其所有子项的高度,则必须首先布置其子项的每个子项。每个项目的一个视图必须膨胀,从而违背了允许视图首先被回收的目的。
相反,您可能希望为此目的使用简单的LinearLayout
。您仍然可以使用Adapter
填充视图,您将获得开箱即用的行为。如果您想使用适配器填充LinearLayout
,您的代码可能如下所示:
LinearLayout container = (LinearLayout) findViewById(R.id.list_container);
Adapter listAdapter = createListAdapter();
final int childCount = listAdapter.getCount();
for (int i = 0; i < childCount; i++) {
View child = listAdapter.getView(i, null, container);
container.addView(child);
}