[英]Adding views to the layout programatically (and inflating) is very slow
我有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個,而且很簡單)。
謝謝
嘗試僅使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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.