我想在 Android Studio 中包含 xml 文件中的几个 ImageView
I want to include several ImageViews from xml file in Android Studio
我想将 Android Studio 中 xml 文件中的几个 ImageView 包含到我的 java class 中,以便稍后在运行时修改它们。
我知道它是如何工作的,但我确信它不是最好的。
List<ImageView> pictures= new ArrayList<>();
pictures.add((ImageView) findViewById(R.id.picture0));
pictures.add((ImageView) findViewById(R.id.picture1));
...
一定有更高效的方法吧?我将 xml 中的 ImageViews 的 ID 命名为 pictureX,其中 X 是图片的编号。因此 - 我想 - 我可以以某种方式迭代这些 ID,例如
for (int i=0; i<24; i++){
String s = "R.id.picture" + i;
pictures.add((ImageView) findViewById(s));
}
但它当然不起作用,因为不可转换的类型。 findViewById的参数必须是int...
有没有办法让这些 ImageView 进入循环,还是我真的必须让每个 ImageView 都独立?
我很感激每一个答案。 :)
您可以使用 ViewGroup.getChildAt()
for(int i = 0; i < container.getChildCount(); i++){
pictures.add((ImageView)container.getChildAt(i));
}
您还可以为复杂的子视图添加转换检查器,这样它就不会抛出 ClassCastException
for(int i = 0; i < container.getChildCount(); i++){
if(container.getChildAt(i) instanceof ImageView)
pictures.add((ImageView)container.getChildAt(i));
}
我想将 Android Studio 中 xml 文件中的几个 ImageView 包含到我的 java class 中,以便稍后在运行时修改它们。 我知道它是如何工作的,但我确信它不是最好的。
List<ImageView> pictures= new ArrayList<>();
pictures.add((ImageView) findViewById(R.id.picture0));
pictures.add((ImageView) findViewById(R.id.picture1));
...
一定有更高效的方法吧?我将 xml 中的 ImageViews 的 ID 命名为 pictureX,其中 X 是图片的编号。因此 - 我想 - 我可以以某种方式迭代这些 ID,例如
for (int i=0; i<24; i++){
String s = "R.id.picture" + i;
pictures.add((ImageView) findViewById(s));
}
但它当然不起作用,因为不可转换的类型。 findViewById的参数必须是int...
有没有办法让这些 ImageView 进入循环,还是我真的必须让每个 ImageView 都独立?
我很感激每一个答案。 :)
您可以使用 ViewGroup.getChildAt()
for(int i = 0; i < container.getChildCount(); i++){
pictures.add((ImageView)container.getChildAt(i));
}
您还可以为复杂的子视图添加转换检查器,这样它就不会抛出 ClassCastException
for(int i = 0; i < container.getChildCount(); i++){
if(container.getChildAt(i) instanceof ImageView)
pictures.add((ImageView)container.getChildAt(i));
}