2015-10-25 40 views
0

我想知道如果我想要的甚至可能。如何添加一個計數資源ID的

嘗試一些Android編碼,但我有一個小問題,我希望有人能幫助我。

ImageView img1 = (ImageView) findViewById(R.id.circleselect1); 

現在什麼是想在我的資源ID與增加一個

ImageView img1 = (ImageView) findViewById(R.id.circleselect+integer); 

我知道這是不是工作結束的整數,但有什麼方法可以幫助我想要什麼?

+0

你爲什麼要那樣?記住這些整數是系統自動生成的,而不是保證任何順序或值 – shem

+0

我有一個計數器,並且我有4個R.id.circleselect,就像R.id.circleselect1,R.id.circleselect2,R.id. circleselect3。 R.id.circleselect4我想要得到正確的來源,如果計數器擊中下一個int – D3F

回答

3

我看到您的評論I have a counter, and i have 4 R.id.circleselect's like R.id.circleselect1, R.id.circleselect2, R.id.circleselect3. R.id.circleselect4 i want to get the right source if the counter hits the next int並且您要求的解決方案是一個糟糕的主意。

請嘗試一下。創建一個您想要的ID的數組,然後根據需要使用它們。

int[] array = new int[]{R.id.circleselect1,R.id.circleselect2,R.id.circleselect3,R.id.circleselect4}; 
+0

你是我今天的英雄,謝謝你的解釋。這對我來說可以。謝謝 – D3F

0

ID作爲它們出現在R類(更確切地說,在裏面Rid類)都只是靜態字段。

您可以通過使用

R.id.class.getDeclaredField("circleselect" + i).getInt(null); 

其中i是在名稱末尾的整數動態地訪問它們。

這是不建議的,因爲這是非常不OOP,並且如果該字段不存在將會中斷。

0

是這樣的嗎?

String circle = "circleselect" + integer; // or integer.toString() 
int resID = getResources().getIdentifier(circle, "id", getPackageName()); 
ImageView img = (ImageView) findViewById(resID);