2013-05-06 8 views
0

내 앱에 대해 Pulse 종류의 UI를 만들고 있습니다. 이를 위해 나는 클래스를 주어진 here으로 사용하고 있습니다. 그러나이 클래스는 성능 문제가 있으며 눈에 띄는 지연을 제공합니다.HorizontalListView 성능 문제 : 모든 하위보기에 대해 통화가 부풀려집니다.

이것을 확인하기 위해 TraceView Profiler을 사용하여 평가했으며이 클래스는 모두보기를 재사용하지 않으며 getView() 안에있는 모든 호출에 대해 inflate() 메서드를 호출합니다. 내가 잘못 아무것도

public View getView(final int position, View convertView, ViewGroup parent) { 
    final BaseAssets baseAsset = baseAssetsList.get(position); 

    if (convertView == null) { 
     viewHolder = new ViewHolder(); 
     convertView = inflater.inflate(R.layout.gallery_list_item, parent, false); 
     viewHolder.newLabel = (ImageView) convertView.findViewById(R.id.iv_new); 
     viewHolder.assetImage = (ImageView) convertView.findViewById(R.id.iv_thumbnail); 
     convertView.setTag(viewHolder); 

    } else 
     viewHolder = (ViewHolder) convertView.getTag(); 
} 

class ViewHolder { 
    ImageView newLabel; 
    ImageView assetImage; 
} 

암 : 여기

내가 어댑터를 설계하고있어 어떻게? 그렇지 않은 경우 성능 향상을위한 대안을 제안하십시오. 아마도 당신이 시도했거나 현재 라이브러리의 뷰를 재사용 할 수있는 다른 라이브러리 일 것입니다. 감사 !

답변

1

convertView이 null 인 경우 convertView.setTag(viewHolder);을 절대로 호출하지 않는 것 같습니다. 처음으로 태그로 설정하지 않고 ViewHolder을 검색 할 수 없습니다.

편집 :는 코드가 잘 보인다 이외의

, 내 추측이 문제가 HorizontalListView의 구현에 있다고 할 것이다.

소스 (HorizontalListView.java)를 살펴본 결과 mAdapter.getView으로 전화하기 전에 mRemovedViewQueue이 비어 있는지 확인해보십시오. 그렇다면 제대로 처리하지 못합니다.

+0

정말 죄송합니다. 여기에서 코드를 단순화하기 위해 해당 행을 삭제했습니다. 내 실제 코드에 거기에. 혼란에 대한 사과! – gauravsapiens

+0

내 대답이 업데이트되었습니다. 나는 그것이 도움이 될지 의심 스럽다. 죄송합니다. 하하 – Akash

+0

문제 없습니다. 나는 한번 시도해 보겠습니다! 학생입니까? – gauravsapiens