Android HorizontalListView性能问题:每个子视图的调用都会膨胀
我正在为我的应用程序制作一个类似Pulse的UI。为此,我使用了给定的Android HorizontalListView性能问题:每个子视图的调用都会膨胀,android,listview,horizontallist,pulse,Android,Listview,Horizontallist,Pulse,我正在为我的应用程序制作一个类似Pulse的UI。为此,我使用了给定的horizontalistView类。但是,这个类有性能问题,并且有明显的滞后 为了证实这一点,我使用TraceView探查器对其进行了评估,发现该类没有完全重用视图,并为getView()中的每个调用调用调用inflate()方法 下面是我如何设计适配器的: public View getView(final int position, View convertView, ViewGroup parent) { fi
horizontalistView
类。但是,这个类有性能问题,并且有明显的滞后
为了证实这一点,我使用TraceView探查器对其进行了评估,发现该类没有完全重用视图,并为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;
}
我做错什么了吗?如果没有,请建议我改进性能的变通方法。可能是您曾经尝试过的其他库,或者以任何方式重用我当前库中的视图。谢谢 似乎您从未调用过convertView.setTag(viewHolder)如果convertView
为空,则为code>。如果不先将其设置为标记,则无法检索视图保持架
编辑:
除了您的代码看起来不错之外,我的最佳猜测是问题在于horizontalistView
的实现
我查看了它的源代码(HorizontalListView.java),如果您可以对源代码进行实验,请尝试在调用mAdapter.getView
之前检查mRemovedViewQueue
是否为空。如果为空,则无法正确处理回收。我真的很抱歉。我删除了那一行只是为了简化我的代码。在我的实际代码中,它就在那里。抱歉搞混了!更新了我的答案。不过我怀疑这会有帮助。抱歉,哈哈诺问题……不过我会试试的!你是学生吗?目前,是的,我是。