我在Android Developers处理GridView示例。我正在调整示例代码以使用GridView,9x9图像显示数独板。 (它可能是9x9文本数字,但我选择了图像)。
示例代码包含用于设置ImageView的示例(mThumbIds是图像资源ID的数组):
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
到目前为止一切都很好,它的初始化很好。
我跟踪每个单元格的imageViews,以便在我想显示不同的图像时(通过单击图像本身)使用它们。
再次这很好,除了位置0 (GridView中的第一项)。这绝对与mThumbIds上面的图像集保持一致。 即 我用
imageView.setImageResource(imgId)
更改网格周围不同位置的图像,除了位置0外,它们都会发生变化。
代码运行时没有异常,但图像永远不会改变。 位置0有什么特别之处吗?这正在变成一个脱发的场景 - 感激地收到任何建议。
答案 0 :(得分:0)
你的getView代码看起来很好,但它可能没有被调用。你需要触发重绘。
如果您的适配器是BaseAdapter(或BaseAdapter的子类),请在网格适配器上调用notifyDataSetChanged()以强制重绘。 类似的东西:
((BaseAdapter)mGridView.getAdapter())notifyDataSetChanged();