我的RecyclerView包含多个视图(大约30个),每个视图的页面/高度都很长。
RecyclerView中的每个页面都包含可以水平滚动的视图(在第一个水平滚动视图中大约20个视图)和(在第二个水平滚动视图中大约10个视图)。
这意味着每次创建视图时,每个RecyclerView都会创建大约30个视图(并对其进行膨胀)。这非常非常慢。
for(int i = 0; i < 10; i++) {
View details = LayoutInflater.from(parent.getContext()).inflate(R.layout.details, parent, false);
viewHolder.container.addView(details);
}
我尝试了多种内容,例如嵌套的RecyclerViews,但同样慢。是否有一个很好的解决方案,可以为每个页面创建多个视图,而不会受到性能的影响(主要是在垂直滚动时只看到一秒但仍然非常烦人)。
到目前为止,我最好的解决方案是每页的RecyclerView +嵌套RecyclerView和Horizontall Scroll View,它创建的布局更少(只有10而不是20,而且很简单)。
由于
答案 0 :(得分:2)
尝试仅在循环外部获取LayoutInflater,并将其添加到容器视图中。
(这假定parent
和viewHolder.container
相同)
LayoutInflater inflator = LayoutInflater.from(parent.getContext())
for(int i = 0; i < 10; i++) {
View details = inflator.inflate(R.layout.details, viewHolder.container, true);
}