从多个 ImageViews 中获取 Resource Id 并为它们分配 drawable
Get Resource Id from multiple ImageViews and assign drawable to them
我的应用有一个 GridLayout 和 60 个 ImageView。我想将一个可绘制对象分配给 25 个网格布局单元格。为此,我有一个包含 25 个随机数的数组。
然后我定义了一个哈希图,每个项目都是图像视图之一:
private HashMap<Integer, Integer> imageViews = new HashMap<>();
imageViews.put(0, R.id.imageView1);
.
.
.
imageViews.put(59, R.id.imageView60);
并将 60 个 imgageviews 放入 hashmap ... 0 是第一个 imageview 的 id。
并使用此方法将可绘制对象设置为单元格:
private void setBombDrawable(){
HashMap<Integer, Integer> map = mImageViewsMap.getImageViews();
for (int tag : randomBombArray) {
int id = map.get(tag);
ImageView imageView = findViewById(id);
imageView.setImageResource(R.drawable.exploded);
}
}
代码运行没有问题,但是是否有任何更简单的方法从网格布局中获取图像视图 ID 或标签而不是 60 行代码?
当您可以直接从 GridLayout 获取 ImageView 时,为什么只使用 id。 GridLayout 是一个 ViewGroup,因此您可以遍历其所有子视图。
private Map<Integer, ImageView> imageViews = new HashMap<>();
int childCount = gridLayout.getChildCount();
for (int i = 0; i < childCount; i++) {
View v = gridLayout.getChildAt(i);
if (v instanceof ImageView) {
map.put(i, (ImageView) v);
}
}
我的应用有一个 GridLayout 和 60 个 ImageView。我想将一个可绘制对象分配给 25 个网格布局单元格。为此,我有一个包含 25 个随机数的数组。
然后我定义了一个哈希图,每个项目都是图像视图之一:
private HashMap<Integer, Integer> imageViews = new HashMap<>();
imageViews.put(0, R.id.imageView1);
.
.
.
imageViews.put(59, R.id.imageView60);
并将 60 个 imgageviews 放入 hashmap ... 0 是第一个 imageview 的 id。 并使用此方法将可绘制对象设置为单元格:
private void setBombDrawable(){
HashMap<Integer, Integer> map = mImageViewsMap.getImageViews();
for (int tag : randomBombArray) {
int id = map.get(tag);
ImageView imageView = findViewById(id);
imageView.setImageResource(R.drawable.exploded);
}
}
代码运行没有问题,但是是否有任何更简单的方法从网格布局中获取图像视图 ID 或标签而不是 60 行代码?
当您可以直接从 GridLayout 获取 ImageView 时,为什么只使用 id。 GridLayout 是一个 ViewGroup,因此您可以遍历其所有子视图。
private Map<Integer, ImageView> imageViews = new HashMap<>();
int childCount = gridLayout.getChildCount();
for (int i = 0; i < childCount; i++) {
View v = gridLayout.getChildAt(i);
if (v instanceof ImageView) {
map.put(i, (ImageView) v);
}
}