0

ImageViews我的XML 文件中有一堆

他们的身份证是:

ivIcon0
ivIcon1
ivIcon2
ivIcon3

如果我的int k;值为 1,我只想显示ivIcon1,如果我的int k值为 0,我想显示“ivIcon0”

我尝试了以下方法:

int iconResource = R.id.ivIcon(k);

这给了我一个错误。我确信这很简单,但似乎无法弄清楚。我想将background匹配的 ID设置iconResourceR.drawable.iconpressed

我有一个小部件,它具有以下行:

RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.widgetlayout);

然后我可以使用以下行来设置图像源:

views.setImageViewResource("THE ID FROM THE INDEX", "THE DRAWABLE");

但是以上两行在一个Activity

4

2 回答 2

1

创建一个 int 数组:

int[] resources = { R.id.ivIcon0, R.id.ivIcon1, R.id.ivIcon2, R.id.ivIcon3 };

然后通过使用访问 idint 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 中的值,则会产生编译器错误。

于 2013-09-30T00:10:25.450 回答
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);
    }
于 2013-09-30T12:04:16.943 回答