Kotlin 기초#6 listener

0

야! 너두 코틀린

목록 보기
6/13

오늘은 자바와 코틀린의 listener 부착에 대해 알아보겠습니다.

현재 코틀린은 View Binding이 적용된 상태입니다.

class Study06 : AppCompatActivity() {

    val binding by lazy { ActivityStudy06Binding.inflate(layoutInflater) }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
 //바인딩이 적용된상태이다.

🚀 1. 익명 함수로 부착하기

버튼이 한두개일때, 익명함수로 만들어서 부착하는게 가장편하다고 알려져있죠.

Kotlin

 binding.textView.setOnClickListener {
	Log.d("", "하")
 }

Java

 binding.textView.setOnClickListener {new OnClickListener() { 
 @Override public void onClick(View v) {
 if(v.getId() == R.id.test_btn){
	Log.d("", "하")
    }

🎂 2. OnclickListner 상속받기

가장 코드가 깔끔해보입니다.
Kotlin

class MainActivity : Activity(), View.OnClickListener{

    override fun onClick(v: View?) {
        when(v!!.id){
             R.id.textView -> Log.d("", "하")
        }
    }
}

Java

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){
		 Log.d("", "하")
	}
}

💖 3. OnclickListner 생성

2번에 비해 중복 리스너를 만들어낼수있다는 장점이 있습니다.
Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
           binding.textView.setOnClickListener(listener)
}

val listener = object : View.OnClickListener {
	override fun onClick(v: View?) {
            when (v!!.id) {
                 R.id.textView -> Log.d("", "하")
            }
        }

Java

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){
        	} 
        };

상황에따라 선택하시면 될듯 합니다.

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글