본문 바로가기
2023년 이전/Android

Android - Kotlin을 사용하여 Listener 등록

by JeongUPark 2019. 8. 29.
반응형

Android 에서 java를 사용할 경우 Listenr 등록은 다음과 같습니다. (예를 들어 ClickListener를 사용하였습니다.)

 

public class MainActivity extends AppCompatActivity implement OnClickListener{

	private Button mBtn;
 	@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBtn = (Button) findViewById(R.id.test_btn);
        mBtn.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View v) {
    	if(v.getId() == R.id.test_btn){
         //TODO
    }
}

또는 

 

public class MainActivity extends AppCompatActivity implement OnClickListener{

	private Button mBtn;
 	@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBtn = (Button) findViewById(R.id.test_btn);
        mBtn.setOnClickListener(mClickListener);
    }
    
    private OnClickListener mClickListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
    		if(v.getId() == R.id.test_btn){
            //TODO
        }
    };
}

이렇게 2가지 방법으로 Listener를 각 UI에 매칭시켜 사용할 수 있습니다.

 

그럼 Kotlin의 경우에는 어떻게 할까요?

Kotlin의 경우 많이들 사용하는 3가지 방버이 있습니다.

 

class MainActivity : Activity(), View.OnClickListener{
	
    private var mBtn : Button? = null;
	override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       mBtn  = findViewById(R.id.test_btn) as Button
    }
    override fun onClick(v: View?) {
        if(v?.id == R.id.test_btn){
            //TODO
        }
    }
}

 

class MainActivity : Activity(){
	
    private var mBtn : Button? = null;
    private var mBtn2 : Button? = null;
    private var mBtn3 : Button? = null;
	override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       mBtn  = findViewById(R.id.test_btn) as Button
       mBtn!!.setOnClickListener(mClickLister);
       mBtn2  = findViewById(R.id.test_btn_2) as Button
       mBtn2!!.setOnClickListener(mClickListenr2);
       mBtn3  = findViewById(R.id.test_btn_3) as Button
       mBtn3!!.setOnClickListener(mClickListenr3);
    }
    val mClickLister : View.OnClickListener = object : View.OnClickListener{
         override fun onClick(v: View?) {
			 //TODO
         }
     }
     
  val mClickLister3 : View.OnClickListener = View.OnClickListener{
         if(it.id == R.id.test_btn_3 ){
             //TODO
         }
     }
}
class MainActivity : Activity(){
	
    private var mBtn : Button? = null;
    private var mBtn2 : Button? = null;
    private var mBtn3 : Button? = null;
	override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       mBtn  = findViewById(R.id.test_btn) as Button
       mBtn!!.setOnClickListener { v:View? -> //TODO }
       mBtn2  = findViewById(R.id.test_btn_2) as Button
       mBtn2!!.setOnClickListener(object: View.OnClickListener {
            override fun onClick(v: View?) {
               //TODO
            }
        })
       mBtn3  = findViewById(R.id.test_btn_3) as Button
       mBtn3!!.setOnClickListener(View.OnClickListener { 
            if(it.id == R.id.test_btn_3 ){
            	//TODO
            }
        })
        
    }
}

위와 같은 방식으로 Listenr들을 등록할 수 있다. 이때, mBtn3에 사용되는 it은 onClick에 파라미터가 v 한개기 때문에 it으로 대처가 가능하다. 만약 Listner에 정리된 interface에서 사용되는 파라미터가 2개일 경우에는 다음과 같다.

 var mTouchListener: View.OnTouchListener = View.OnTouchListener { v, event -> //TODO }

같이 작성할 수 있다.

 

이 외에도 다양한 방식이 있다.

반응형

'2023년 이전 > Android' 카테고리의 다른 글

Android - WorkManager(1)  (1) 2019.10.16
Android -LiveData  (0) 2019.10.15
Android - ViewModel  (0) 2019.10.15
custom 숫자 키 입력 - 보안 숫자 keyboard  (0) 2019.09.06
Android 잠금화면 위에 Activity 보여주기  (0) 2019.08.28