2017-06-05 16 views
0

我想從Android Studio中的xml文件中包含幾個ImageView到我的Java類中,以便在運行時稍後修改它們。 我有辦法如何運作,但我相信它不是最好的。我想在Android Studio中包含幾個來自xml文件的ImageViews

List<ImageView> pictures= new ArrayList<>(); 
    pictures.add((ImageView) findViewById(R.id.picture0)); 
    pictures.add((ImageView) findViewById(R.id.picture1)); 
    ... 

必須有一個更有效的方法,對吧?我在xml中將ImageViews的ID命名爲pictureX,其中X是圖片的編號。因此 - 我想 - 我可以以某種方式迭代這些ID像

for (int i=0; i<24; i++){ 
     String s = "R.id.picture" + i; 
     pictures.add((ImageView) findViewById(s)); 
    } 

但它不工作,當然是因爲不可兌換的類型。 findViewById的參數必須是一個int ...

有沒有辦法讓這些ImageViews在一個循環中,還是我真的必須讓每個ImageViewon自己?

我很感謝每一個答案。 :)

+0

喜,所有圖像視圖都在同一個父容器中? – Sheychan

+0

是的,他們都在同一個父容器 – Jonas1902

回答

0

您可以使用ViewGroup.getChildAt()

for(int i = 0; i < container.getChildCount(); i++){ 
    pictures.add((ImageView)container.getChildAt(i)); 
} 

您也可以增加鑄檢查複雜的子視圖,以便它不拋出ClassCastException異常

for(int i = 0; i < container.getChildCount(); i++){ 
    if(container.getChildAt(i) instanceof ImageView) 
     pictures.add((ImageView)container.getChildAt(i)); 
} 
+0

謝謝,它工作得很好! – Jonas1902

相關問題