2010-08-19 3 views
0

ImageView (Android Java 용)를 확장 한 필자가 작성한 사용자 정의 클래스가 있습니다. 동일한 작업을 수행 할 클래스의 모든 인스턴스에 ClickListener를 추가하고 싶습니다. (ImageView 만 움직이면됩니다.)모든 확장 된 ImageViews에 대한 setOnClickListener - Java

다음과 같은 코드를 사용하면 좋겠지 만 클래스의 인스턴스 객체에 적용되고있다.

MyCustomImageView fd = new MyCustomImageView(this); 
fd.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       Animater(fd); 
      } 
     }); 

내가 클래스 선언에 "OnClickListener를 구현"다음이 공공 무효의 onclick() 클래스의 방법, 그리고 나를 위해 작동하지 않았다 사용하여 시도

위의 코드 스 니펫을 "fd"대신 "this"로 사용하여 시도해 보았지만 작동하지 않습니다.

저는 자바에 비교적 익숙하지 않습니다. 이것은 제 지식의 범위를 벗어납니다. 귀하가 제공 할 수있는 도움이 있으면 대단히 감사하겠습니다.

답변

1

정말 쉽습니다. 당신은 사용자 정의 클래스에서 그것을 할 수 있습니다

public class MyCustomImageView extends ImageView{ 

    public MyCustomImageView(Context context){ 
     super(context); 
     setOnClickListener(theCommonListener); 
    } 

    private OnClickListener theCommonListener = new OnClickListener(){ 
     public void onClick(View v) { 
      // do what you want here 
     } 
    } 
} 

이 그것을 할 수있는 다른 방법이있다, 그러나 이것은 하나 구현하고 이해하기 정말 간단합니다. MyCustomImageView의 모든 인스턴스에는 동일한 이벤트 수신기가 있습니다 (외부에서 재정의하지 않는 한).

+0

음 ... 나는 이미지를 클릭 할 때 호출하는 다른 메서드와 함께 다른 메서드에 도달하지 않는다고 덧붙였다. Eclipse는 또한 theCommonListener가 결코 로컬로 읽히지 않는다는 것을 말하고 있습니다 ... 어떤 아이디어입니까? – Kyle

+0

죄송합니다. 내가 만든 객체에서 리스너를 제거하는 것을 잊었습니다 ... 이것은 완벽합니다! 감사. – Kyle

관련 문제