位置0的Android GridView问题

时间:2012-02-19 11:44:33

标签: android image gridview

我在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有什么特别之处吗?这正在变成一个脱发的场景 - 感激地收到任何建议。

1 个答案:

答案 0 :(得分:0)

你的getView代码看起来很好,但它可能没有被调用。你需要触发重绘。

如果您的适配器是BaseAdapter(或BaseAdapter的子类),请在网格适配器上调用notifyDataSetChanged()以强制重绘。 类似的东西:

((BaseAdapter)mGridView.getAdapter())notifyDataSetChanged();