2013-05-07 4 views
0

이 질문은 약간 까다로울 수 있습니다. 나는 노력했다. 그러나 나는 무엇을 검색해야하는지에 대해 정말로 확신하지 못한다. 그래서 이것에 대한 어떠한 문서도 찾지 못했다.For 루프에서 ImageView 설정

나는 7x10 눈금이 있고, 각 눈금에는 고유 한 이미지보기가 있습니다. 그리드의 ImageViews는 grid00, grid01, ..., grid79, grid710입니다. 중첩 된 for 루프에서 각 그리드의 이미지를 변경하고 싶습니다. 내 코드에서 말한다 어디 그렇게 : 나는 정말 그것을 수행 할 작업을

grid04.setImageResource(R.drawable.walllr); 

입니다 : 내가 및 J 단어 그리드 후입니다

gridij.setImageResource(R.drawable.walllr); 

내가j 중첩 된 for 루프에서.

70 개 항목 각각에 대해 코드를 작성하지 않고 70 개 항목 모두에 대해 이미지를 변경하려고합니다. 이것이 가능한가? 다음은 코드입니다.

public void initialize() { 
    map = DM.getMap(); 
    for (int i = 0; i < 7; i++) { 
     for (int j = 0; j < 10; j++) { 
      if (map[i][j].isUsed()) { 
       grid04.setImageResource(R.drawable.walllr); 
      } 
     } 
    } 
} 
+0

왜 grid04가 있습니까? –

+0

이미지를 대체하고 있는지 확인하기위한 테스트가 있습니다. grid04는 내 ImageViews – Evorlor

+0

중 하나의 이름이므로이 문제는 양방향 배열의 그리드 저장과 관련이 있습니까? –

답변

1

ImageViews의 배열을 만들 수 있습니다.

Imageview[] myImageViewArray = new ImageView[70]; 
int imageViewCounter=0; 

and in your function 

public void initialize() { 
    map = DM.getMap(); 
    for (int i = 0; i < 7; i++) { 
     for (int j = 0; j < 10; j++) { 
      if (map[i][j].isUsed()) { 
       myImageViewArray[imageViewCounter]=new ImageView(); 
       myImageViewArray[imageViewCounter].setImageResource(R.drawable.walllr); 
       imageViewCounter++; 
      } 
     } 
    } 
} 

이 방법을 사용할 수 있습니다. 그러나 기능을 사용하기 전에 수정해야합니다. 희망이 도움이됩니다.

+1

모든 코드 조합을 사용하면 결국 코드가 도움이되었습니다. 감사! – Evorlor

0

ImageView [7] [10]의 2D 배열을 만듭니다.

+0

좀 더 구체적으로 알려주시겠습니까? 나는 이해하지 못한다 – Evorlor

2
Imageview[][] grid = new Imageview[7][10]; 
for(int i = 0; i <= 7; i++) 
     for(int j = 0; j <= 10; j++) //from 0 to 10, dunno if you want it from 1 to 10 
     { 
      grid[i][j]=new Imageview(....) 
     } 

원하는 모든 그리드를 변경할 수있는 유일한 방법입니다. 먼저 그리드를 만듭니다. 더 이상 grid04이라고 부르지 않지만 grid[0][4].

3

gridxxImageViews은 어디 있는지 언급하지 않습니다. gridxx은 XML 레이아웃에서 그 ImageView의 ID를 나타내는 경우에 당신은 사용할 수 있습니다

for (int i = 0; i < 7; i++) { 
    for (int j = 0; j < 10; j++) { 
     if (map[i][j].isUsed()) { 
      int id = getIdentifier("grid" + i + j, "id", getPackageName()); 
      ((ImageView)findViewById(id)).setImageResource(R.drawable.walllr); 
     } 
    } 
} 

getIdentifier() 방법은 조금 느린 있음을 유의하십시오. 이상한 이유로 Java 클래스에서 사용되는 이름 인 경우 해결 방법은 일반 사용자와 같은 배열을 사용하는 것입니다.

+0

"보통 사람들처럼": D – zbr

+0

watcha 의미 배열을 사용하고 계십니까? – Evorlor

+0

@Evorlor xml 레이아웃에서 이미지를 선언하거나 코드에 추가하면 해당 ImageViews를 사용하는 방법에 대한 질문에서 명확하지 않습니다.그것이 첫 번째 버전이라면 내 대답의 코드를 사용하십시오. 두 번째 옵션 인 경우,'ImageView'를 만들 때 참조를 유지할 배열을 만듭니다. – Luksprog