我正在使用带有大量图像的stickyheaders gridview,标题是文本。在任何给定时间,我在屏幕上有10到20个图像。我正在使用视图模式来重用单元格。
然而,很多时候细胞不能重复使用 - 为什么?此外,每个单元被调用两次 - 为什么?
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Photo photo = getItem(position);
ViewHolder viewHolder = null;
if (convertView == null ) {
Log.d(TAG, "convertview is null :"+position);
convertView = mInflater.inflate(R.layout.item_photo_grid, parent, false);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.photo);
viewHolder.selected = convertView.findViewById(R.id.selected);
convertView.setTag(viewHolder);
}
else {
Log.d(TAG, "convertview is resused :"+position);
viewHolder = (ViewHolder) convertView.getTag();
}
frameLoader.pauseOnFling(isFlinging);
frameLoader.pauseOnScroll(isScrolling);
frameLoader.setMaxItems(getVisiblePhotoCount());
frameLoader.displaySmallImage(photo, viewHolder.imageView);
if (mSelectedItems.contains(photo)) {
viewHolder.selected.setVisibility(View.VISIBLE);
}
else {
viewHolder.selected.setVisibility(View.GONE);
}
return convertView;
}
这就是logoutput的样子:
答案 0 :(得分:0)
GridView
使用视图recycler
在当前视口下方或上方添加循环视图,并在滚动时移动recyclable pool
时将活动视图移至off-screencode
。这样GridView只需要保持enough views in memory
填充布局中的已分配空间和一些额外的可循环视图 - 即使适配器有数百个项目。它将以不同的方式填充空间 - 从顶部,从底部等 - 取决于视口的方式。下面的图像直观地总结了平移GridView时发生的情况。
如果没有View可供重用,Android会将null传递给convertView参数。