按需运行映像适配器

时间:2015-01-23 23:15:42

标签: android

我使用图像适配器使用drawable填充网格视图,我当前在onCreate基于上一个活动传递的数据中设置了网格元素的数量,列数和大小。 然后生成随机抽取网格(参见下面的代码)。

public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return gridSize;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
            randomPosition = rng.nextInt(12);
            imageView = new ImageView(mContext);
            imageView.setScaleType(ScaleType.CENTER_CROP);
            imageView.setLayoutParams(new GridView.LayoutParams(circleS, circleS));

            imgSet();
            }
            return imageView;
    }
    }//end adapter////////

imgSet()从12个可用中获取随机抽取并将其设置为当前imageview的imageResource,它还触发另一个方法,该方法分配标记值并进行其他检查。

现在,我希望能够根据请求重新加载具有新大小和格式的网格,而不必重新启动活动。 我尝试使用grid.invalidateViews(),但这似乎删除了所有的图像视图,除了最后一个确实获得了一个新的drawable生成像他们所有应该有的。

那么如何删除网格中的所有当前图像视图,然后运行此图像适配器以重新填充新大小和格式化的网格?

1 个答案:

答案 0 :(得分:1)

你应该在某处看起来像这样的代码吗?

GridView gridview = (GridView) rootView.findViewById(R.id.gridview);
ImageAdapter imageAdapter = new ImageAdapter(<context>);
gridview.setAdapter(imageAdapter);

如果要更改gridview列计数调用。

gridview.setNumColumns(<X>);

如果数据已更改,并且您希望更新您的观看次数。

imageAdapter.notifyDataSetChanged();