我的XML文件中有一堆ImageViews
他们的ID是:
ivIcon0
ivIcon1
ivIcon2
ivIcon3
如果我的int k;
值为1,我只想显示ivIcon1
,如果int k
值为0,我想显示'ivIcon0`
我尝试了以下内容:
int iconResource = R.id.ivIcon(k);
这给了我一个错误。我确信这很简单,但似乎无法弄明白。我想将与background
匹配的ID iconResource
设置为R.drawable.iconpressed
我有一个小部件,其中包含以下行:
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.widgetlayout);
然后我可以使用以下行来设置图像源:
views.setImageViewResource("THE ID FROM THE INDEX", "THE DRAWABLE");
但上述两行在Activity
答案 0 :(得分:1)
创建一个int数组:
int[] resources = { R.id.ivIcon0, R.id.ivIcon1, R.id.ivIcon2, R.id.ivIcon3 };
然后使用int iconResource = resources[k];
从字符串中获取id(如果您在活动中执行此操作,请将“context”替换为“this”
int iconResource = context.getResources().getIdentifier("ivIcon" + k, "id", context.getPackageName());
然后获取您的观点:ImageView view = (ImageView) findViewById(iconResource)
就个人而言,只要可能的id数量不是太大,我更喜欢使用int-array方法。当使用get-id-from-String方法时,如果找不到,则最终会得到id 0,而如果找不到,则int-array中的值将产生编译器错误。
答案 1 :(得分:0)
我的解决方案适用于其他人将来需要它的情况:
if(Arrays.asList(myarraylist).contains(df.format(Calendar.getInstance(Locale.US).getTime()))) {
int index = Arrays.asList(suspendedDates).indexOf(df.format(Calendar.getInstance(Locale.US).getTime()));
int k = MainActivity.this.getResources().getIdentifier("ivIcon" + index, "id", MainActivity.this.getPackageName());
ImageView view = (ImageView) findViewById(k);
view.setImageResource(R.drawable.caliconpressed);
}