谜题~~~我遇到了一个奇怪的问题。那是一旦我的活动初始化,gridView 将调用 getView() 方法来初始化其中的所有项目。但是我没有做任何事件,我什至没有触摸屏幕,但gridview确实将图片从第一个位置加载到最后一个位置。这是我的日志:
D/LocalGridViewAdapter(20843): getView() called at :0
D/LocalGridViewAdapter(20843): getView() called at :0
D/LocalGridViewAdapter(20843): getView() called at :1
D/LocalGridViewAdapter(20843): getView() called at :2
D/LocalGridViewAdapter(20843): getView() called at :3
D/LocalGridViewAdapter(20843): getView() called at :4
.....................................
D/LocalGridViewAdapter(20843): getView() called at :564
D/LocalGridViewAdapter(20843): getView() called at :565
我认为这是由 ViewTreeObserver 引起的,但我确实需要它来调整 gridview 项目的布局,使图片看起来更漂亮。这是我的 ViewTreeObserver 的代码,它来自 Google bitmapFun Projext:
gv.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (mAdapter.getNumColumns() == 0) {
final int numColumns = (int) Math.floor(gv.getWidth()
/ (GlobalConstants.mImageThumbSize
+ GlobalConstants.mImageThumbSpacing));
if (numColumns > 0) {
final int columnWidth = (gv.getWidth() / numColumns)
- GlobalConstants.mImageThumbSpacing;
GlobalConstants.reqSize = columnWidth;
mAdapter.setNumColumns(numColumns);
mAdapter.setItemHeight(columnWidth);
Log.d("~~~~~~~~~~~",
"onCreateView - numColumns set to " + numColumns);
}
}
}
});
我只是怀疑为什么 Bitmapfun 还可以?它运作良好,但我的项目很糟糕。