Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何简化android小部件中视图的设置值_Java_Android_Android Layout_Coding Style_Android Widget - Fatal编程技术网

Java 如何简化android小部件中视图的设置值

Java 如何简化android小部件中视图的设置值,java,android,android-layout,coding-style,android-widget,Java,Android,Android Layout,Coding Style,Android Widget,我想问一下是否可能,以及如何简化以下代码: views.setImageViewBitmap(R.id.contact01Button, data.get(0).getFriendImage()); views.setImageViewBitmap(R.id.contact02Button, data.get(1).getFriendImage()); views.setImageViewBitmap(R.id.contact03Button, data.get(2).getFriendImag

我想问一下是否可能,以及如何简化以下代码:

views.setImageViewBitmap(R.id.contact01Button, data.get(0).getFriendImage());
views.setImageViewBitmap(R.id.contact02Button, data.get(1).getFriendImage());
views.setImageViewBitmap(R.id.contact03Button, data.get(2).getFriendImage());
views.setImageViewBitmap(R.id.contact04Button, data.get(3).getFriendImage());
如何在一个周期或类似的情况下生成视图id,例如R.id.contactXXButton?我需要设置许多按钮。

用于(int I=0;I<4;I++){
for (int i = 0; i < 4; i++) {
  int drawableResourceId = getResources().getIdentifier("contact0" + i + "Button", "drawable", getPackageName());
  views.setImageViewBitmap(drawableResourceId, data.get(i).getFriendImage());
}
int-drawableResourceId=getResources().getIdentifier(“contact0”+i+“按钮”、“drawable”、getPackageName()); views.setImageViewBitmap(drawableResourceId,data.get(i.getFriendImage()); }
这是伪代码,但应该是这样的

有关更多信息,请参见

是的,您可以这样做。 下面是一个在循环中实现findViewById()的简单演示


for(int a=0;a这应该可以做到:

for (int i = 0; i < ids.length; i++) {
  String identifier = "contact" + String.format("%02s", i+1) + "Button";

  // next line taken from louiscoquio's answers. Credits go to him!
  int id = getResources().getIdentifier(identifier, "drawable", theContext.getPackageName());

  views.setImageViewBitmap(id, data.get(i).getFriendImage());
}
for(int i=0;i
你可以用它来完成你想要的。

按钮ID是基于1的两位数字。对于这种特殊情况,仅仅连接
a
是没有帮助的。是的,你正准备使用
String.format(“%02s”,i+1”)
但是我把这部分留给了用户:)我已经尝试过了,它也可以工作:int k=0;对于(int j=R.id.contact01Button;j,但是你依赖于这样的假设,即你的按钮id的值为0..max,并且顺序正确。很有可能有一天它会失败。使用名称并查找值,这样更安全。是的,我知道了。我使用你的解决方案,因为我的解决方案太硬编码了。顺便说一句,非常感谢!:-)
for (int i = 0; i < ids.length; i++) {
  String identifier = "contact" + String.format("%02s", i+1) + "Button";

  // next line taken from louiscoquio's answers. Credits go to him!
  int id = getResources().getIdentifier(identifier, "drawable", theContext.getPackageName());

  views.setImageViewBitmap(id, data.get(i).getFriendImage());
}