2012-04-30 163 views
1

我有以下设置。在我的XML中,我有一堆图像视图。我试图根据偏好设置和星期几来显示其中的一个。这一定很容易,但我找不到将变量传递给findViewByID的正确方法。这里是代码片段:将变量传递给findViewByID

String groupName = "R.id."+prefs.getString("groupListKey", "<unset>")+"_"+(Calendar.getInstance().get(Calendar.DAY_OF_WEEK)); 

ImageView image = (ImageView) findViewById(groupName); 

回答

2

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

findViewById条件语句接收int作为参数,这是R.id类中生成的参数之一。

你可以有你的ID的数组:根据你的条件

int[] imagesIds = new int[] { R.id.image1, ... R.id.image7 }; 

然后确定指数:

int imageIndex = ... 
ImageView image = (ImageView) findViewById(imagesIds[imageIndex]);