2013-09-30 13 views
0

我有一大堆的ImageViews在我的XML文件使用指數來分配繪製價值

其ID號:

ivIcon0 
ivIcon1 
ivIcon2 
ivIcon3 

如果我有1的int k;值我只想顯示ivIcon1如果我有0 int k價值我想顯示「ivIcon0`

我試過如下:

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

哪給了我一個錯誤。我相信這很簡單,但似乎無法弄清楚。我想設置匹配ID的backgroundiconResourceR.drawable.iconpressed

我有具有以下行的窗口小部件:

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

,然後我可以使用下面的行來設置圖像源:

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

但上面的兩行不會以Activity

回答

1

工作創建一個int AR光線:

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

,然後使用int iconResource = resources[k];

訪問ID或從字符串獲得ID(如果你在活動中這樣做,將「情境」與「此」

int iconResource = context.getResources().getIdentifier("ivIcon" + k, "id", context.getPackageName()); 

然後讓你的觀點:ImageView view = (ImageView) findViewById(iconResource)

就個人而言,我更喜歡使用INT-陣列的方法,只要因爲可能的編號不是太大。當使用get-id-from-String方法時,如果未找到id 0,則最終將返回id 0,而如果未找到int-array中的值,則會產生編譯器錯誤。

+0

我更新了我的問題,因爲你正確回答,但我問了一個錯誤的情況下...對不起。你可以讓我知道如何更新它。謝謝。 – Si8

+0

第二種方法的工作,而不是得到整數值如何讓我繪製? – Si8

+0

@ SiKni8查看我更新的答案。 –

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); 
    }