2012-04-30 191 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]);