我有以下设置。在我的xml中,我有一堆图像视图。我试图只显示其中一个,具体取决于首选项和星期几中设置的数字。这一定非常简单,但我找不到将变量传递给findViewByID的正确方法。这是代码片段:
String groupName = "R.id."+prefs.getString("groupListKey", "<unset>")+"_"+(Calendar.getInstance().get(Calendar.DAY_OF_WEEK));
ImageView image = (ImageView) findViewById(groupName);
答案 0 :(得分:3)
findViewById()要求您传递一个表示资源标识符的整数。你试图传递一个字符串
您最好的选择是拥有一个条件语句来评估您的星期几并返回正确的ID而不是按照您的方式进行操作
int resourceId = 0;
switch (Calendar.getInstance().get(Calendar.DAY_OF_WEEK)) {
case Calendar.SUNDAY:
resourceId = R.id.sundayView;
break;
case Calendar.MONDAY:
resourceId = R.id.mondayView;
break;
...etc
}
ImageView image = (ImageView) findViewById(resourceId);
答案 1 :(得分:1)
findViewById
收到int
作为参数,这是R.id
类中生成的参数之一。
你可以拥有一个包含id的数组:
int[] imagesIds = new int[] { R.id.image1, ... R.id.image7 };
然后根据您的条件确定索引:
int imageIndex = ...
ImageView image = (ImageView) findViewById(imagesIds[imageIndex]);