2014-05-20 2 views
1

내 응용 프로그램에 thing이 있습니다. 누군가가 내가 그의의 ArrayList에 5 점을 추가 할 번호 5와 다이를 누를 때 내가하고 싶은ImageView 배열 뒤에 정수를 가져 오기

이입니다. 청취자을 생각하고 있었지만 어떤 ImageView를 눌렀는지 어떻게 알 수 있습니까?

은 현재 내가 보드

public ImageView[] initiateDice() { 
    ImageView pDice1 = (ImageView) findViewById(R.id.die_one); 
    ImageView pDice2 = (ImageView) findViewById(R.id.die_two); 
    ImageView pDice3 = (ImageView) findViewById(R.id.die_three); 
    ImageView pDice4 = (ImageView) findViewById(R.id.die_four); 
    ImageView pDice5 = (ImageView) findViewById(R.id.die_five); 
    ImageView pDice6 = (ImageView) findViewById(R.id.die_six); 
    ImageView pDice7 = (ImageView) findViewById(R.id.die_seven); 
    ImageView pDice8 = (ImageView) findViewById(R.id.die_eight); 

    ImageView[] placeHolders = new ImageView[] {pDice1, pDice2, pDice3, pDice4, pDice5, pDice6, pDice7, pDice8}; 
    return placeHolders; 
} 

바로 자리를 얻기 위해이 방법을 사용하고 난 "인쇄"그 방법

public void printDice(int[] array1, ImageView[] array2) { 
    for (int i = 0; i < array1.length; i++) { 
     array2[i].setImageResource(diceImages[array1[i] - 1]); 
     array2[i].setVisibility(View.VISIBLE); 
    } 
} 

을 사용해서 화면에 주사위입니다 첫 번째 배열은 주사위에 8 개의 임의로 생성 된 숫자이고 두 번째 배열은 PlaceHolders입니다.

diceImages은 주사위의 이미지이며 6 가지 상태입니다.

private final int[] diceImages = new int[] {R.drawable.dice_one, R.drawable.dice_two, R.drawable.dice_three, 
     R.drawable.dice_four, R.drawable.dice_five, R.drawable.dice_pico }; 

모든 의견이나 제안을 환영합니다. 그것을 할 수

답변

0

다른 답변 솔루션의 일부를 제공하고 있지만, 실제로이 경우, 당신은 태그에 저장할 수 있습니다, 이미지보기에 표시되는 번호를하는 방법에 대한 요구하는지 :

public void printDice(int[] array1, ImageView[] array2) { 
    for (int i = 0; i < array1.length; i++) { 
     array2[i].setImageResource(diceImages[array1[i] - 1]); 
     array2[i].setVisibility(View.VISIBLE); 
     array2[i].setTag(array1[i]); 
    } 
} 

을 그리고 매트의 대답을 수정 :

OnClickListener listener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Integer dieValue = v.getTag(); 
     // do something 
    } 
}; 

pDice1.setOnClickListnener(listener); 
pDice2.setOnClickListnener(listener); 
pDice3.setOnClickListnener(listener); 
pDice4.setOnClickListnener(listener); 
pDice5.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice8.setOnClickListnener(listener); 
+0

대단히 고마워. 나는 두 번째'.setTag()'메소드를 생각조차하지 않았고, 그것에 대해 고마워했다. 그래, 다른 답변도 좋았어. 다시 한번 감사드립니다. – TheNerdFromYesterday

0

한 가지 방법은이 같은 OnClickListener를 설정하는 것입니다 :

OnClickListener listener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (v == pDice1) { 
      // do something 
     } else if (v == pDice2) { 
     ... 
     } 
    } 
}; 

pDice1.setOnClickListnener(listener); 
pDice2.setOnClickListnener(listener); 
pDice3.setOnClickListnener(listener); 
pDice4.setOnClickListnener(listener); 
pDice5.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice6.setOnClickListnener(listener); 
pDice8.setOnClickListnener(listener); 
+0

모든'pDice' 변수가'initiateDice()'에 국한되어 있다면'final'을 선언하지 않고 익명 클래스 내에서 사용할 수 없습니다. – Emmanuel

0

당신은 모든 ImageViewsOnClickListener()을 설정합니다. OnClickListener()은 클릭 한 View을 전달합니다. View은 이며 의 ID를 사용하여 int을 반환합니다. 그런 다음 switch 또는 if(){...} else if(...)()을 추가하여 클릭 한 View의 ID를 기반으로 특정 작업을 수행하는 것입니다.