티스토리 뷰

View.OnClickListener 인터페이스를 상속받게 되는 경우 onClick() 메서드를 구현해야 하는데, 해당 함수 안에서는 외부 클래스의 변수를 참조하지 못한다. 정확하게는 final 변수가 아닌 변수는 참조하지 못한다.

 하지만 동적변수를 전달 해야 하는 경우가 있을때에는 아래와 같이 View.OnClickListener 를 상속받아 변수를 전달하는 방법을 사용한다.

 

    public abstract class OnClickListenerPutIndex implements View.OnClickListener {
        protected int index;
        public OnClickListenerPutIndex(int index) {
            this.index = index;
        }
    }
public View mView;

for (int i = 0; i < 10; i++) {
    mView.setOnClickListener(new OnClickListenerPutIndex(i) {
        @Override
        public void onClick(View v) {
            Log.i("mView Clicked Index=", index);
        }
    });
}

 

댓글

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음



Total
Today
Yesterday
최근에 달린 댓글