我使用图像适配器使用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生成像他们所有应该有的。
那么如何删除网格中的所有当前图像视图,然后运行此图像适配器以重新填充新大小和格式化的网格?
答案 0 :(得分:1)
你应该在某处看起来像这样的代码吗?
GridView gridview = (GridView) rootView.findViewById(R.id.gridview);
ImageAdapter imageAdapter = new ImageAdapter(<context>);
gridview.setAdapter(imageAdapter);
如果要更改gridview列计数调用。
gridview.setNumColumns(<X>);
如果数据已更改,并且您希望更新您的观看次数。
imageAdapter.notifyDataSetChanged();