2013-05-06 62 views
0

我正在爲我的應用程序製作Pulse類型的UI。爲此,我使用HorizontalListView類作爲here。然而,這門課有性能問題,並且會有明顯的滯後。Horizo​​ntalListView性能問題:調用每個子視圖的膨脹

爲了證實這一點,我估計它使用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.setTag(viewHolder);convertView爲空的情況下。沒有先將其設置爲標籤,您無法檢索ViewHolder

編輯:

除了你的代碼似乎罰款,我最好的猜測是,問題出在HorizontalListView的實施。

我看了看它的源代碼(Horizo​​ntalListView.java),如果你可以試驗源代碼,試着檢查mRemovedViewQueue是否爲空,然後它會調用mAdapter.getView。如果是,那麼它沒有正確處理回收。

+0

我真的很抱歉。爲了簡化我的代碼,我刪除了該行。在我的實際代碼中。道歉混亂! – gauravsapiens 2013-05-06 05:37:15

+0

更新了我的答案。我懷疑它會幫助。對不起哈哈 – Akash 2013-05-06 09:27:37

+0

沒問題..我會試一試! 你是學生嗎? – gauravsapiens 2013-05-06 09:56:54