2014-11-08 3 views
1

각 페이지/높이가 긴 여러 뷰 (약 30 개)가 포함 된 RecyclerView가 있습니다.프로그래밍 방식으로 뷰에 뷰를 추가하는 것은 매우 느립니다.

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 (20 대신 10 개가 간단 함)입니다.

감사

+0

당신이보기 것을 어디 만듭니 까 (이 parent 가정 viewHolder.container은 동일)? – pskink

+0

RecyclerView Adapter의 onCreateView에서 이러한 성능 저하를 일으키는 것을 발견했을 때 해결 된 것으로 표시 할 것입니다. 그것은 중첩 된 가중치이며, peter answer가 레이아웃이 적절하게 수행 될 때 가장 좋은 것처럼 보입니다. – Mazur

+0

당신은 onCreateViewHolder를 의미합니까? – pskink

답변

2

에만 루프 밖에서 한번 위해 LayoutInflater를 받고는 컨테이너보기에 추가시키는보십시오.

LayoutInflater inflator = LayoutInflater.from(parent.getContext()) 
    for(int i = 0; i < 10; i++) { 
     View details = inflator.inflate(R.layout.details, viewHolder.container, true); 
    } 
+0

지금 당장 시도했지만 성능은 여전히 ​​높습니다. 속도는 빠르지 만별로는 아닙니다. – Mazur

+0

아마도 세부 정보 XML에 최적화가 필요합니다. 이 xml 레이아웃을 질문에 추가 할 수 있습니까? 할 수 없다면, [android lint tool] (http://developer.android.com/tools/help/lint.html)을 실행하고이 파일에 대한 sugestions를보십시오. – petey

+0

레이아웃 파일은 사내 어플리케이션이므로 공유 할 수 없습니다. 죄송합니다. 레이아웃을 수동으로 추가하여 추가 할 수 있습니다. 레이아웃을 여러 번 포함 시키면 .xml 파일에서 성능이 저하되지 않습니다. – Mazur

관련 문제