2011-11-22 3 views
1

ImageView 객체 (img)를 만들고 동일한 객체 (img)를 통해 일부 리소스를 for 루프 ()가있는 선형 레이아웃으로 전달했습니다. 루프의 각 반복에서 루프 컨트롤러 변수 (i)의 값을 반영하는 토스트를 표시하기 위해 의(img.setOnClickListener())에 setOnClickListener()를 호출합니다. 내가 노력 코드 세그먼트는 다음과 같습니다 :onClickListener() 설정 방법

for (i = 1; i <= 6; i++) 
       { 

    img = new ImageView(this); 

    img.setImageResource(R.drawable.thambu); 

    body.addView(img); 



    this.img.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 


    Toast.makeText(Details.this, Integer.toString(i) , Toast.LENGTH_LONG).show(); 


       } 
      }); 

     } 

것은 내가 내가 그것 (7)을 표시하는 이유를 알고있는 토스트가 7

표시가, 생성되는 이미지를 클릭 할 때마다하지만 내가 원하는 클릭 한 이미지의 색인을 표시합니다.

제가 로이드 해당 할 수있는 방법

(본체 내가 이미지 뷰를 통과하는 선형 배열의 ID이다). 미리 감사드립니다.

답변

1
for (i = 1; i <= 6; i++) 
       { 

    img = new ImageView(this); 

    img.setImageResource(R.drawable.thambu); 

    body.addView(img); 
    img.setTag(i); 



    this.img.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
     int tagInt = (int) v.getTag(); 

    Toast.makeText(Details.this, Integer.toString(tagInt) , Toast.LENGTH_LONG).show(); 


       } 
      }); 

     } 

이 시도, 내가 사용한 태그 ..

1

사실, 오히려 일반적인 자바 질문입니다.

다음과 같은 것을 수행해야합니다

for (int i = 1; i <= 6; i++) { 

    img = new ImageView(this); 

    img.setImageResource(R.drawable.thambu); 

    body.addView(img); 


    final int j = i; 
    this.img.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     Toast.makeText(Details.this, Integer.toString(j) , Toast.LENGTH_LONG).show(); 
    } 
    }); 
}